如何阅读源码?

几次想阅读源码,但是每回都坚持不下去,毕竟读源码真的是一件很难得事情 。随便一份源码 , 动辄几百个类,每个类几百行,没点毅力真的坚持不下来 。当然,也有阅读方法的缘故 。
直到我看到了一本书《通用源码阅读指导书》,感觉才找到了源码阅读的方法,也正是在这本书的指导下 , 我读完了第一份开源源码MyBatis 。

1 意义与难点

这本书最开始讲了源码阅读的优点,作者总结了四点:
  • 透彻地理解项目的实现原理
  • 接触到成熟和先进的架构方案
  • 学习到可靠与巧妙的实施技巧
  • 发现自身知识盲点,提升自身知识储备
然后讲解了为什么阅读源码十分困难 , 作者总结原因为每一个优秀的工程项目都凝聚了众多开发者的缜密思维逻辑;每一个优秀的工程项目都经历了从雏形到成熟的曲折演化过程 。最终,这些思维逻辑和演化过程都会投射和堆叠到源码上,使得源码阅读的过程是一个通过源码去逆推思维逻辑和演化过程的工作,因此十分困难 。

2 源码选择

阅读源码的一个重要工作就是选择合适的源码 , 作者总结了选择源码的几个纬度:
  • 项目的成熟度
  • 项目的应用广度
  • 项目的涉及面
  • 项目的规模
并给出了每个纬度的评判指标 。

3 源码阅读方法

选好源码项目之后,要做的就是阅读源码 。
作者介绍了源码阅读的方法、技巧、经验 。主要包括两个大的步骤:
  • 项目初探
  • 源码阅读
在项目初探环节,主要是通过断点运行项目,然后分析项目的整体框架、跳转流向 。而源码阅读部分则是最为主要的阅读环节 。
在源码阅读环节,作者总结了许多的源码阅读方法 。

4 源码阅读

作者介绍了以下几个主要的阅读方法:
  • 模块分析:通读整个模块中的类,分析模块的主要功能 。
  • 模块归类:按照模块功能将模块进行分类,例如分为基础模块、核心模块、解析模块等等 。
  • 自底向上:阅读源码的一个重要的思路就是自底向上,先阅读外围模块,再深入核心模块,这样可以避免阅读源码时牵扯到太多的未阅读模块,打乱源码阅读的思路 。
  • 合理猜测:阅读源码时,可以根据功能合理猜测其具体实现,然后再通过源码分析是否和猜测一样 。这样可以提升源码阅读的效率 , 也能提升自己的架构能力 。
  • 类比阅读:可以通过相似代码的比较,找出架构的异同点,然后分析这样架构的意义 。
  • 善于汇总:需要不断汇总每个模块的含义,与其他模块的关系等,从而整体理解整个项目 。
  • 网格阅读:作者提出要纵向阅读以从浅到深,也要横向阅读,找准同层次的架构关系 。
为了讲解以上知识点,作者以MyBatis源码为例子 , 通读了整个源码 。我读完之后,真的对MyBatis的源码有了十分透彻的理解 。
而在每个章节前,作者还介绍了相关的基础知识,使得源码的阅读比较顺畅 。

总结

《通用源码阅读指导书》是一本很好的源码阅读入门书,是一本教会你“如何阅读源码”的书籍,也能让你在源码阅读中总结相关的架构知识 。
读完收获很大,推荐 。
【如何阅读源码?】

相关经验推荐