如何弄懂复杂项目
先跑起来,通过文档和实践熟悉业务流程
这一步可以通过
看官方文档
开始,要注意的是一些项目是
更新先于文档
的,比如新版本启动方式有变更,但是文档还没更新。跟着文档不一定能把项目跑起来,需要借助 GitHub Issue 或者是 Slack 这样的工具以获取即时的帮助看测试,通过测试了解流程
如果是开源项目,可以通过
GitHub Action 快速了解需要哪些依赖、如何快速运行测试
,便于在本地运行测试,通过这些集成测试可以快速弄懂业务主线通过 debug 高效快速地梳理流程
通过断点可以一步一步跟踪程序的运行,可以比较直观地看调用栈、变量等等的
对于一些无法本地调试的项目来说,我们可以退而求其次,断点它的测试,这也是一个很有效的方法
画图:降低复杂度
很多项目会使用一些比较优雅的设计或是引入一些抽象层,这样代码读起来就会跳来跳去,层级深的话就很容把人给绕晕了
可以用
draw.io
或者
excalidraw
等工具,根据实际情况画一画 活动图、时序图等提出具体的问题,带着问题看项目
如果只是盲目地看项目代码,可能看完还是一头雾水,但是如果能提出一个具体问题,或是带着一个需求去看,效果就会好得多
比如我提出问题:“某个任务在集群内是如何完成的?”,我可能会先去找到该任务的创建入口,然后顺藤摸瓜,找到任务的调度逻辑,顺着
happy path
找到下发任务的逻辑,再找到 Woker 的处理逻辑,这样就能弄懂整个调度流程最后如果能用
一句话
回答提出的问题,那可能能说明你对这个问题涉及的知识已经有了一个比较好的理解英语很重要
大多数项目的注释、日志等的都是英文,看懂这些能极大提高效率