1、理解代码并不是一个「读」的过程。而是一个:假设;设计验证方法;验证,如果验证失败重新假设的过程。
2、提出假设需要对代码进行第一步的阅读。设计验证方法包括:1.对代码进行一定的修改,并验证所期待的结果;2.用 debugger 验证系统内部状态。
3、理解代码最好是以加入新功能或者 fix bug 为目的,因为可以天然的选择上面第一步的目标,而不用设计一些「artificial」的目标。
4、不要期待能理解一个产品的整个 code base。否则你就不是在前人的基础上增加价值,而是重复前人的工作了 —— 试想你也不会总是试图理解自己写完的已经封装良好的代码。
5、了解这个程序的功能,用于解决什么问题?了解这个程序的输入和输出。比如从形式(WS or DB)、格式 (XML or JSON)和使用的框架(WCF or Remoting)
6、了解程序中的模块(如果有分的话),最好有一张整体设计图供参考。并理清图中模块与代码之间的对应关系。