知优码

您现在的位置是:首页 > Java语言 > Java脚手架

Java脚手架

如何阅读java源码

知优码 2019-11-08Java脚手架
想把源码搞懂,吃透,首先得登高望远,瞰察路径,明确目标与方向,了解源码的概貌。 所以有些准备工作必须得做。 1. 阅读源码之前,需要有一定的技术储备。比如设计模式,在很多Java源码中几乎就是标配,尤

想把源码搞懂,吃透,首先得登高望远,瞰察路径,明确目标与方向,了解源码的概貌。

 

所以有些准备工作必须得做。

 

1. 阅读源码之前,需要有一定的技术储备。

比如设计模式,在很多Java源码中几乎就是标配,尤其是这几个:模板方法,单例,观察者,工厂方法,代理,策略,装饰者。

 

再比如阅读Spring源码,肯定得先了解IoC是怎么回事,AOP的实现方式,CGLib,Java动态代理等,自己动手,写点相关的代码,把这些知识点掌握了。

 

2. 必须得会使用这个框架/类库, 最好是精通各种各样的用法。

 

上面刚提过,魔鬼都在细节中,如果有些用法根本不知道,可能你能看明白代码是什么意思,但是不知道它为什么这些写。

 

3. 先去找书,找资料,了解这个软件的整体设计。

 

都有哪些模块? 模块之间是怎么关联的?怎么关联的?

可能一下子理解不了,但是要建立一个整体的概念,就像一个地图,防止你迷航。

 

在读源码的时候可以时不时看看自己在什么地方。

 

4. 搭建系统,把源代码跑起来!

 

相信我,Debug是非常非常重要的手段, 你想通过只看而不运行就把系统搞清楚,那是根本不可能的!

 

衣带渐宽终不悔,为伊消得人憔悴。

 

5. 根据你对系统的理解,设计几个主要的测试案例,定义好输入,输出。

 

运行系统,慢慢地debug ,一步步地走,这是个死功夫,没有办法绕过。

 

Debug一遍肯定是不行的,需要Debug很多遍。

 

第一遍尽可能抛弃细节,抓住主要流程, 比如有些看起来不重要的方法就不进去看了。

 

第二遍、第三遍....再去看那些细节。

 

一个非常重要的工作就是记笔记(又是写作!),画出系统的类图(不要依靠IDE给你生成的), 记录下主要的函数调用, 方便后续查看。

 

文档工作极为重要,因为代码太复杂,人的大脑容量也有限,记不住所有的细节。 文档可以帮助你记住关键点, 到时候可以回想起来,迅速地接着往下看。

 

 

 

6. 主要的测试案例搞明白了,丰富测试案例,考虑一些分支流程。

继续Debug......

 

总之,静态地看代码 + 动态地debug (从业务的角度), 就会慢慢揭开这个黑暗森林的面纱。

 

这一步会非常非常地花费时间,但是你做完了,对系统的理解绝对有质的飞跃。

 

 

最后一点,也是最关键的一点: 要能坚持下去。

 

我不是一个聪明人, 但是笨人自有笨办法:什么事都架不住不断的重复,一遍看不明白,再来第二遍, 两遍搞不明白,再来第三遍......

 

可能有人要问: 你怎么能这么坚持地刨根问底呢?

 

答案就是好奇心: 这玩意儿到底是怎么实现的?!