怎么读源码 读源码的一些技巧

除非你在泛泛的浏览代码,否则

1.开始时,尽量去找相关文档

2.实际使用该软件

3.保持清醒,知道此时自己在找什么:架构?一段算法?或是某个具体的函数调用?

要有多种策略去搞懂,一种不行马上去换另一种尝试

如:读文档,不行就换 读注释,不行就换 读源码,不行就换 跑一变程序并打断点调试。

静态调试-》动态调试

      如 strace,ltrace,gdb


清晰的知道,自己想要找到什么,目标要明确,否则容易迷失方向。

找到目标代码后,忽略不相关的内容。这是一种必须掌握的技能(亲身体会。。否则你的脑子会随着不断的深入代码而逐渐变为一团浆糊,连自己在哪儿,在干什么都不知道)

手段:

切片(slicing)

把代码复制出到一个临时文件中,删掉不需要的无关部分(打省略号),只留下主干

实现类似的新特性时,最好找个功能类似的模块,作为模板

代码越多大多数时候都是 自底向上


了解某个方法、函数的作用
1.基于函数名 -猜 

2.读注释

3.如何使用这个函数(调用者)

4.读函数内容代码

5.查资料,文档

在阅读控制代码时,要添加注释

对于控制结构的分析

1.每次只分析1个控制结构,将内容看作黑盒

2.遇到特殊的如 goto,break,continue,要单独分析

union 共用体 联合体

常用于实现 多态

一个对象,在不同情况下,有多种对应的工作方式


文档

刚接触大型项目时,推荐先读读文档,从宏观角度了解结构,设计理念,在你深入具体的代码丛林之前,至少先拿着模糊不清的地图和指南针。

阅读源码时,尽可能的利用能得到的文档。阅读一小时代码得到的信息,不过相当于阅读1分钟文档。

但文档也会存在一些问题:

如 @hide

未记录的特性

理想化表述


可以打印到纸上,或者手写

要理解复杂的算法和数据结构,要找到一个安静的地方,聚精会神的思考,不要借助任何计算机化或自动化的帮助。 笔都不要用?!

需要创造一个工作环境,不被打扰。被打断后至少要15分钟才能恢复思考状态。

吐槽:开放式办公环境很难做到这一点,就连Ruby的创造者也有体会。

总结:

1.找文档,注释看,1小时代码=1分钟文档,有大局观,但小心文档也有细节的疏忽

2.跑一下代码,或调试一下

3.分析代码时,记住自己的目标,用切片法忽略掉不必要的内容,只保留主干

4.难到爆的算法内容,打印或手写出来,不用自动化工具,只用自己的脑子,聚精会神分析

原文地址:https://www.cnblogs.com/cyy12/p/11902306.html