扎实的基础知识+正确的方法是快速阅读源码的关键

上一篇我们快速的复习了阅读源码的步骤,同时对比了JUnit3和JUnit4之间的差异。

本篇是《如何高效阅读源码》专题的第十四篇,也是最后一篇,对专题内容做一次总结。

首先,专题第一篇文章描述了几种不正确的阅读源码的方式:

  • 在不了解项目的情况下就去阅读源码

  • 直接就读最新版本的源码

  • 一行一行的读完整的源码

  • 通过debug的方式阅读源码

这几种方式之所以是错误的方式,是由于我们的记忆所决定的:我们的记忆可以分为「短时记忆」和「长时记忆」!对于「短时记忆」来说,一般正常人一次只能记忆7(加减2)个左右的无规律信息。上面的四种方式实际就是在做无规律记忆。可没有哪个项目的行数是7行左右的,所以上述阅读源码的方式,是很难读完项目源码的。

接着,专题第二篇提供了15种提高源码阅读效率的小技巧:

  • 了解作者开发项目的目的:知道了靶子,才知道方向

  • 先熟练使用起来:先学会走,再去跑

  • 阅读官方文档:最了解项目的还是作者本人,好好读读文档

  • 先理解概念:我们实际都是在通过概念来理解这个世界

  • 了解版本技术背景:了解技术限制,版本迭代改变的不一定是需求,可能只是技术本身

  • 没必要读最新版本的代码:新版本的功能多,但核心功能实际并没有变化

  • 不需要读完所有的源码:少则几万,多则几百上千万行的代码量你能读完?

  • 多版本比较阅读:了解版本间的差异,能更好的理解项目

  • 自顶向下梳理:先梳理整体流程

  • 自底向上归纳:总结很重要

  • 先做减法,再做加法:先找出核心模型,基于核心模型扩展

  • 从接口找关系:接口是对外协议,可以快速定位调用方

  • 画图辅助阅读:90%的信息来源于视觉

  • 设计模式辅助阅读:理解设计模式能加速代码的理解

  • debug只是辅助:debug只是用来验证梳理的流程是否正确

这15个小技巧的目的,就是在建立对目标项目的印象和模型。
最后,我们梳理了详细的阅读源码的步骤:

从上面的流程,你会发现,我们实际是在:

  • 不断的对源码进行建模

  • 再将模型代入到流程中,对流程进行细化

不断的重复这两个步骤,从核心模块到非核心模块一点点对流程进行细化完善,最终得到完整的项目流程。

读源码是个主动探索的过程需要不停的根据代码来构建你的流程模型。当你发现你在机械的跟着代码StepIn、StepOver的时候,不妨喝口咖啡、上个厕所、歇一歇,这样反而能提高你阅读源码的效率。

同时,你的基础越扎实,阅读源码的效率就越高,在「提出问题,解答问题!这才是理解代码设计的正确方法」一文中你应该深有体会,在熟悉设计模式的情况下,能快速的理解代码设计。相应的,如果你的算法知识扎实,你就能很快理解语言里集合的设计;如果你的IO和并发知识扎实,你就能快速的理解Netty的设计、Redis的IO模型。

最后希望本专题提供的阅读源码的方法能助你读完第一个开源项目!

发表评论

相关文章