如何阅读大型项目源码心得

时间:2021-09-24 00:47:53
以下是我个人方法的一些总结:
关于如何阅读源码
个人觉得,规范的项目源码包中的头文件与命名方法都是比较规范的。一些重要函数的声明会在相关头文件中有说明,一般情况下,如果一个.c文件只包含一个头文件,那么这个头文件的命名应该是与.c名字相同。阅读开始前,首先展开一下相关的头文件,先查看相关.c文件用到了哪些函数申明,必要时记录这个函数,并注释说明。
函数的命名规则。规范的项目开发中,函数的命名一般都是以英文单词的缩写,如取每个单词的首字母,或一个单词中的几个字母,有的单词之间是以下划线“_”分隔开来的,记住这些英文单词的意思组合,可以有助于代码的阅读。
2、下面是我利用VC6.0工具阅读源代码的方法:
打开VC,“文件”->“新建”->“工程”选择“Win32 Console Application”

下一步就是导入所有的.c与.h文件了。
选中FileView:


右键Sourse File,选择Add File To directory:

选中所以要添加的.c文件,确定,同样的操作完成Header File的导入:

好了, 到此所有*.c.*.h文件已经导入到工程了。下面将我自己总结的如何查找函数的方法列出如下:

假如我要寻找:ad.c中的这段代码中的函数定义和申明
ad_rec_t *ad_open_sps (int32 samples_per_sec)
{
    E_ERROR("A/D library not implemented\n");
    return NULL;
}

这个.c文件中包含自定义的ad.h和err.h,err.h中一看就明白是一些错误信息提示函数的说明,所以我们可以去ad.h中寻找,右键点击ad.h,选择“open document "ad.h"”


我们会发现在头文件中定义了许多宏,还有一些解释编译的语句,如#if...#elif... #endif这是方便平台移植,我们找到我们的平台#elif(linux)


在这里找到了我们所需要的结构体信息,在结构体中我们发现还有一个定义,int32,虽然一看就明白是32位的整形数字,但我们能不能再找到一些其它的数字类型定义呢?我们发现在ad.h这个头文件中还有一个头文件:"s2types.h",我们再去展开这个头文件,发现,这个头文件中定义了一些数据类型的声明:


通过以上由头文件找到相关函数的方法,我们可以想到,是否各.c文件是否可以通过各.c文件中包含的.h文件找到相关的联系呢?如果能把这层关系理清,那么代码的联系结构就清楚了。如果又能理解每个.c程序做了些什么事,那么项目整个流程就清楚了。当然要理解整个流程,相关背景、知识也是必不可少的。
在阅读的过程中发现,阅读一个项目的源码,是从整体往局部的结构来阅读,如一个人站在山顶往下看,要下山去的话,就得找一条路,而这条“路”就是程序的主方向,这样一来,那么目的不就明确了?

7 个解决方案

#1


看Linux源码,我一直用source insight! 
  强大!

#2


好!!

#3


我还是习惯用SOURCE INSIGHT3.0 功能很齐全  用时间长了别的都不习惯

#4


SOURCE INSIGHT 3.5

#5


window 用 SOURCE INSIGHT 
linux  用 kscope 看

#6


都用source insight,还不错

#7


+1
引用 1 楼 jqx_ah 的回复:
看Linux源码,我一直用source insight! 
  强大!

#1


看Linux源码,我一直用source insight! 
  强大!

#2


好!!

#3


我还是习惯用SOURCE INSIGHT3.0 功能很齐全  用时间长了别的都不习惯

#4


SOURCE INSIGHT 3.5

#5


window 用 SOURCE INSIGHT 
linux  用 kscope 看

#6


都用source insight,还不错

#7


+1
引用 1 楼 jqx_ah 的回复:
看Linux源码,我一直用source insight! 
  强大!