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