在开始源码阅读之前,一定要使用过这个产品,了解这个产品的功能、特点。
在开始源码阅读之前,需要先明白几个事
- 是否足够了解
- 要阅读到什么程序
- 如何开始、从哪里开始
开始前
最好是带着问题去阅读源码,不纠结于小细节。 我一般读源码就是碰到问题后,带着问题去看,效果更好,不要想着假大空,把源码当小说一样看。 单个问题解决后,再向外延伸,就可以把一些点串起来。 最后,需要反复看一些重点部份,消失对源码的陌生感之后就会能看进去。 熟悉之后就会一种想要了解更多的感觉就会一直往下看,这个就是自动驱动的动力。
如果看不下去,不要责怪自己懒,人对看不见短期收益的事提不起兴趣这才是正常的一个人,趋利避害是正常的。 看不下去,该干嘛干,强迫自己看效果很差。不要骗自己,假装努力是在浪费时间,干IT的都很忙,看不去就看改改bug。
技巧
- 对说某个功能,在看之前,可以有自己的推测,想像后续的流程是如何执行的。
- 切一个 read_code 分支用来作注释,写上自己的见解,也方便以后再回到这块代码时能快速理解。
- 找到真实阅读源码的动力,如:
- 准备跳槽、面试
- 想了解原理
- 解决项目中的问题
- 装逼
- 跑测试用例,好的开源软件有非常详细的测试用例,可以验证到每一个细节,跑测试用例就可以让人学到不东西。
- 阅读后的输出整理,这个不用多说,学习就是输入 输出。
- 尽量找机会跟同事、同行讨论你看过的源码。
- 如果你看过了,就让你装到了。
- 如果你没看过不了解,别人帮你查缺补漏
如何阅读
从哪里开始
Spring 模块之么多、项目这么大,到哪里开始合适? 如果你是想解决问题,直接定位需要阅读的部份; 如果你是想深入了解,那有两种方式:
- 从关键最重要的几个概念开始,然后延伸
- 了解了整个框架的脉络后,从最基础的部分往上看
另外,看代码不是看小说,不是要一字一句的陷入到细节,切记。当然如果你就是喜欢这样。
测试用例
这个是我比较荐的一个方法,看完一遍之后,通过测试用例可以跟着代码走一遍,调细节。
阅读安排
打开 Spring 项目,先来罗列一下整个项目。这个可太多了,分一下
代码语言:javascript复制spring-aop
spring-aspects
spring-beans
spring-context
spring-context-indexer
spring-context-support
spring-core
spring-expression
spring-instrument
spring-jcl
spring-jdbc
spring-jms
spring-messaging
spring-orm
spring-oxm
spring-r2dbc
spring-test
spring-tx
spring-web
spring-webflux
spring-webmvc
spring-websocket
核心容器
spring-core spring-beans spring-context spring-context-support spring-expression
切面编程
spring-aop spring-aspects
代理模块
spring-instrument
web
spring-web spring-webflux spring-webmvc spring-websocket
从最基础的核心模块开始学习,了解最基本的原理,中间会遇到各种其它的基础知识和技术,就可以顺便拓展一下技能树。