跳到主要内容

阅读源码的意义和方法

本部分内容大部分源自:《通用源码阅读指导书-MyBatis源码详解》

京东购买

电子版下载

本站不提供下载文件,仅提供下载链接。需要访问z-library下载。访问z-library的方法

源码阅读的意义

源码阅读是理解和分析优秀的开源代码,并从中积累和学习的过程。就如同剖析一座摩天大楼的内部构造般去分析一个优秀开源项目的组织划分、结构设计和功能实现,进而学习、借鉴并最终应用到自己的项目中,提升自己的软件设计和开发能力。

源码阅读也是一个优秀软件开发者必备的能力。如今绝大多数软件都是团队协作的成果,只有读懂别人的代码才能继续开发新的功能。即使是单兵作战,也需要读懂自己所写的旧代码,之后才能开展新的工作。

优秀的源码是最棒的编程教材,它能将整个项目完整地呈现给我们,使我们获得全面的提升。源码阅读能让我们:

  • 透彻地理解项目的实现原理;
  • 接触到成熟和先进的架构方案;
  • 学习到可靠与巧妙的实施技巧;
  • 发现自身知识盲点,完善自身知识储备。

因此,源码阅读是软件开发者提升自身能力极为重要的手段。

源码阅读的方法

源码阅读对于提升开发者的技术能力大有裨益,可源码阅读的过程却是极为痛苦的。每一个优秀的工程项目都凝聚了众多开发者的缜密思维逻辑;每一个优秀的工程项目都经历了从雏形到成熟的曲折演化过程。最终,这些思维逻辑和演化过程都会投射和堆叠到源码上,使得源码变得复杂和难以理解。因此,源码阅读的过程是一个通过源码去逆推思维逻辑和演化过程的工作。于是有人说读懂源码比编写源码更为困难,想必也是有一定道理的。

当我们阅读一份源码时,需要面对的困难通常有:

  • 难以归纳的凌乱文件;
  • 稀奇古怪的类型组织;
  • 混乱不堪的逻辑跳转;
  • 不明其意的方法变量。
  • ……

可是,舒适能带来的只是原地踏步。梳理这些凌乱文件、理解这些类型组织、追踪这些逻辑跳转、弄清这些方法变量的痛苦过程,才是真正能让我们获得提升的过程。

源码阅读的过程中也有一些技巧,掌握这些技巧能减少源码阅读过程中的痛苦。“授人以鱼,不如授人以渔”,本书会将源码阅读中的方法和技巧总结出来,并希望大家将它们应用在其他项目的源码阅读中。我们先将一些基本的技巧介绍如下,更多的技巧将会在源码阅读的过程中不断给出。

  • 调试追踪:多数情况下,当我们对某些变量的含义产生疑惑时,借助开发工具的调试功能直接查看变量值的变化是一个非常好的方法。而且该方法还能指引代码逻辑的跳转过程,对于理解源码极为有用。
  • 归类总结:优秀的源码都遵循一定的设计规则,这些规则可能是项目间通用的,也可能是项目内独有的。在源码阅读的过程中将这些设计规则总结出来,将会使源码阅读的过程越来越顺畅。
  • 上下文整合:有些对象、属性、方法等,仅仅通过自身很难判断其作用和实现。此时可以结合其调用的上下文,查看对象何时被引用、属性怎样被赋值、方法为何被调用,这对于了解它们的作用和实现很有帮助。

另外,还有一点不得不提,那就是要有一套强大的开发工具。有一套支持代码高亮显示、错误提示、引用跳转、断点调试等功能的开发工具十分必要,它能让我们快速定位到所调用的方法,也能让我们快速找到当前变量的引用,这些功能是进行源码阅读所必需的。在 Java编程领域,强大的开发工具有 IDEA、Eclipse等,大家可以根据自己的喜好选用。

阅读哪些源码

推荐阅读下面的开源项目源码