1.快速总体了解整个代码 了解基本知识及背景
2.若该程序是可安装或者可运行的程序 那么安装运行,了解其功能
3.按照功能分模块,大模块化为小模块,大问题化解为小问题 逐一进行解决
4.最好按照某种思路理出几条线,顺着这几条线一步步深入进去
5.利用比较好的代码阅读工具,这里我推荐 source insight 对于数据结构和类的定义可以用这个工具很简单的追踪到
6.理清函数的调用方式,利用source insight 找出函数的调用过程
7.关键的数据结构和类的继承派生要画出一个自己能理解的图来,这样在看代码的时候可以随时对图形进行修改,也便于自己理解
8.大型代码定义部分 都是可以分成几个模块来看的
9.看一个函数先看他的返回值和传入的参数,然后看该函数到底做了什么,参数带进来的是什么,返回值或引用带走的又是什么
10. 用计算机的思维方式去看代码,用人的思维方式去总结代码 不要片面性的看语言和语法,那样看完了都不知道程序干什么用的
11.等把代码看明白了之后,最好在代码边上做详细的注释,以后回来看,或者使用这些代码的时候,你就会发现注释太有用了
12.代码中使用到的特殊机制要弄清楚,例如看套接字 你就要把select、poll、epoll这些机制弄明白 可以通过查阅其他资料看这些事件机制
13.看完代码之后,能用自己的语言讲出来这是做什么的,怎么做的,那么看代码就达到一个层次了
14.看结构体或者类很重要啊,首先要结合着,代码搜索结构体定义的变量是做什么用的,改结构体在什么地方调用过,如何创建的,如何删除的,如何初始化的,如何使用的
对结构体有个大体了解
15.看某个结构体或者函数引用的地方 非常重要 有助于你理解这个结构体在代码中的作用,
注意:
第一个步骤,快速浏览一定要迅速 不可纠结于某个小问题 要从整体宏观上把握和理解 这个步骤有文档最好了
第二个步骤,功能性的东西要了解 大胆猜测,小心验证
第三个步骤,具体到某个功能模块就要仔细看,分清楚,深入进去,一定要真正理解,深入进去是对某些数据走向或者思路的深入,而不是对语法和语言的深入
第四个步骤,沿着几条线走,不容易迷失方向,看代码的时候也不会晕----------数据结构最好画个图 初始化和销毁的代码要好好看,再看操作性代码就了然了