如何阅读源码

阅读目的

不同目标,你看代码的策略是不一样的。

  • 粗看:若目标是了解代码结构、模块间耦合及组合方式,仅需查看目录结构与模块组合,无需深入代码上下文关注细节。

  • 细看:当目标是知晓模块内部设计,如具体算法细节实现时,需采用细看策略,通过一步步调试来研究代码。

阅读顺序

明确目的之后,我们就要开始阅读了,这部分我推荐的步骤是:自顶向下,反复阅读

自顶向下

阅读源码本质上是让我们的大脑构建出整个系统。但我们的大脑的运行内存基本上难以一次装下全部逻辑。一种比较好的认知方式是通过分层抽象

一般来说,我们会聚焦在一个层上,研究其细节(用我们大脑的运行内存),压缩成概念/或者说是抽象(Layers of abstraction),并将其存储到长期记忆中(笔记/大脑长期记忆)。

这种方法/思想,同样广泛运用在计算机世界。

多次阅读

在大脑运行内存有限的情况下,后面读到的细节会不断覆盖前面读懂的细节。并不能指望单次阅读就掌握全部内容。

前几次的阅读,需要建立起几个概念的黑箱,放入长期记忆。后几次阅读,不断回想并给黑箱填入信息,直到打开黑箱。

多次阅读,加深理解和记忆,最终产生深刻认知。

阅读技巧

从初版开始

当我们聚焦于源代码的设计、原理、演化时,可以去看其早期版本。早期版本一般比较简单,值得全部读完。再此基础上去读接下来的版本,通过比对版本间的演化,可以得到设计的思路。

带着目的

不要在阅读过程中丢失阅读的目的。目的可以是搞明白某个部件、某个抽象。

搜索代码

学会源码的关键字搜索:github、IDE、grep

运行代码

学会怎么调试:断点、调用栈、日志、print 大法

记录过程

同时,时刻记录自己的思考过程和进度。持久化自己的思考。

其他

现在可以多用 chatgpt 问问题,一些简单的语法问题可以快速解决。

相关链接

怎么读代码?从源码学习是好方法么?

读源码实战教程,以Redis源码为例

如何高效地看代码


如何阅读源码
https://pactheman123.github.io/2025/02/09/如何阅读源码/
作者
Xiaopac
发布于
2025年2月9日
许可协议