1. 首先你要对真个源代码的结构有一个大致的了解,一开始不要进入细节,一定要有个整体的概念。
2. 在对整体概念了解的基础上,你可以聚焦你想要知道的细节了,这可能是源代码中的某个模块。这个要建立在你第一步的基础上,要不然你是很难做到模块的划分的。
3. 看一个模块的过程,其实程序的本质就是数据结构加算法,而这里的算法是广义的,它不一定是一些基础性的算法,例如查找排序等,而更多的是业务逻辑,而这些业务逻辑其实会用到一些基础性的算法。要懂业务逻辑,你要做的是最好了解这个代码的业务功能即这段代码主要是为了什么作用。而数据结构当然就是实现这些业务功能需要用到的结构体。
而对代码逻辑来说,其实程序基本上可以分为两大块:初始化过程和工作过程。初始化过程就不多说了,软件的成功运行都是在已知的初始环境上面开始的,而工作过程就是跑业务的过程,对于代码可能是循环式的,也可能是中断任务型的,更或者两者的结合。
对于数据,一定要对全局变量一定要多加关注,这个变量的初始化,哪个模块读哪个模块写。
4. 除上面几点外,还有一点特别重要,那就是接口,模块之间的相互关系,即这个模块和别的模块之间的接口也要熟悉。当你看这个模块的时候,你要把另外一个模块看成黑盒,只需要关心输入输出即可。