这篇文章就前人幕三少所写的优质文章【怎样去阅读源码,这篇文章值的你一读】,整理便于日后理解复习。
文章目录:
- 为什么要阅读源码?
- 如何阅读源码
我们为什么要阅读源码呢?
- 因为我们要理解他的内部实现机制,方便于我们更好的使用他;
- 学习别人优秀的设计,合理的抽象,简洁的代码...... 总之是好处多多。学习内部的实现思路,有利于扩展我们解决问题的方法。
如何阅读源码?
庞大的代码放到你的面前,就如同一个巨大的迷宫,要在其中东转西转寻出一条路来,把迷宫的整个结构搞清楚,理解核心思想,真心不容易。而且我们看到的源码基本上都经过若干年发展、经过很多人不断地完善的,枝枝蔓蔓非常多,魔鬼都在细节中。 阅读的时候很容易陷进去, 看了几十层函数调用以后,就彻底懵了,就放弃了: 甭管你把源码吹得天花乱坠, 老子再也不看了。只有掌握了好的方法才能便于我们阅读源码。
阅读源码的步骤:
-
阅读源码之前,需要有一定的技术储备。(比如设计模式,在很多Java源码中几乎就是标配,尤其是这几个:模板方法,单例,观察者,工厂方法,代理,策略,装饰者。)
-
必须得会使用这个框架/类库, 最好是精通各种各样的用法。
-
先去找书,找资料,了解这个软件的整体设计。(都有哪些模块? 模块之间是怎么关联的?怎么关联的?可能一下子理解不了,但是要建立一个整体的概念,就像一个地图,防止你迷航。在读源码的时候可以时不时看看自己在什么地方。)
-
搭建系统,把源代码跑起来!(Debug是非常非常重要的手段, 你想通过只看而不运行就把系统搞清楚,那是根本不可能的!)
-
根据你对系统的理解,设计几个主要的测试案例,定义好输入,输出。(一个非常重要的工作就是记笔记(又是写作!),画出系统的类图(不要依靠IDE给你生成的), 记录下主要的函数调用, 方便后续查看。文档工作极为重要,因为代码太复杂,人的大脑容量也有限,记不住所有的细节。 文档可以帮助你记住关键点, 到时候可以回想起来,迅速地接着往下看。要不然,你今天看的,可能到明天就忘个差不多了。做的一些笔记, 格式不重要,很随意,方便自己看懂就行。)
-
主要的测试案例搞明白了,丰富测试案例,考虑一些分支流程。(静态地看代码 + 动态地debug (从业务的角度), 就会慢慢揭开这个黑暗森林的面纱。)
最关键的一点: 要能坚持下去。(什么事都架不住不断的重复,一遍看不明白,再来第二遍, 两遍搞不明白,再来第三遍......)