阅读c++源码

1. 弄清楚项目的框架结构和各个模块的功能(输入和输出分别是什么)

2.参照源代码和文档、业务知识,掌握各个模块的主流程

先从每个模块的main函数开始,按顺序列出所用函数,试着画流程图。注意:对于列出的函数,我们现在只关心输入什么,处理后输出什么,即函数的输入、输出,不关心函数的实现。可以边看边注释。

比如README, 作者写的非常的详细,仔细读过之后,在阅读程序的时候往往能够从README文件中找到相应的说明,从而简化了源程序的阅读工作。

如果源代码有文档目录,一般为doc或者docs, 最好也在阅读源程序之前仔细阅读,因为这些文档同样起了很好的说明注释作用。

从makefile文件入手,分析源代码的层次结构,找出哪个是主程序,哪些是函数包。这对于快速把握程序结构有很大帮助。

从main函数入手,一步一步往下阅读,遇到可以猜测出意思来的简单的函数,可以跳过。但是一定要注意程序中使用的全局变量(如果是C程序),可以把关键的数据结构说明拷贝到一个文本编辑器中以便随时查找。

分析函数包(针对C程序),要注意哪些是全局函数,哪些是内部使用的函数,注意extern关键字。对于变量,也需要同样注意。先分析清楚内部函数,再来分析外部函数,因为内部函数肯定是在外部函数中被调用的。

需要说明的是数据结构的重要性:对于一个C程序来说,所有的函数都是在操作同一些数据,而由于没有较好的封装性,这些数据可能出现在程序的任何地方,被任何函数修改,所以一定要注意这些数据的定义和意义,也要注意是哪些函数在对它们进行操作,做了哪些改变。

如果对某段代码理解不透,可以在这里下断点,调试运行项目,看什么能激发这个断点,然后通过调用堆栈(查看定义)看从什么地方调用的,或者跟进相关的函数看看他做了什么。

也可以试着把它注释掉并让项目可以编译通过,运行看看他对程序的影响。

3.熟悉各个模块的主流程,要弄清各个自定义函数的具体实现(标准库函数除外)

4.在每一步要做好源码代码阅读笔记,总结方法和技巧

5.提出更好的解决方案,按照软件工程的设计步骤,评估方案的性能(界面、易用性、内存等方面)

6.每日构建

大师是怎么做的呢?一般,要初步了解人家的框架模型,(这可以通过追踪一些核心函数/类得到一些印象,或者开发文档等);进一步,找到核心数据结构,核心数据结构会直接影响代码的质量。(曾经有人说:我不要看你的程序,让我看一看你的数据结构!)事实上,当你完全读懂它的数据结构时,在来阅读源代码,就是水到渠成的事了。

在阅读程序的同时,最好能够把程序存入到cvs之类的版本控制器中去,在需要的时候可以对源代码做一些修改试验,因为动手修改是比仅仅是阅读要好得多的读程序的方法。在你修改运行程序的时候,可以从cvs中把原来的代码调出来与你改动的部分进行比较(diff命令), 可以看出一些源代码的优缺点并且能够实际的练习自己的编程技术。
在阅读程序的同时,要注意一些小工具的使用,能够提高速度,比如vi中的查找功能,模式匹配查找,做标记,还有grep,find这两个最强大最常用的文本搜索工具的使用。

 

你可能感兴趣的:(c++)