缘起
最近出差比较多,在路上思考:如何学习源码?
是的,面试官问你看了哪些源码?讲一讲?
更高级的:说一下Netty黏包拆包怎么实现的?
或者再问的偏一点?讲一下某个功能的源码?
呵呵~
是不是一万个草尼玛,在空中飘?
是的,所以我们要思考的问题是如何更有效的阅读源码,而不是看源码,以及如何抓住重点。
步骤
1、会使用
学习源码,首先要会使用,知道有哪些功能。在使用到基础上,针对入口点,常用功能进行代码阅读。
2、懂原理
知道开源项目的原理,比如注册中心,先知道注册中心的实现原理是什么?注册、发现、存储、通信、心跳检测等。
3、懂结构(架构)
知道开源项目的架构(结构),比如逻辑架构,部署架构,类图,项目结构等。再去看代码。
4、懂流程
熟悉开源项目的业务流程,系统流程。比如业务流程图、顺序图、时序图等。再去看代码。
5、懂实现
知道是如何实现的,用了哪些技术,代码是如何写的。
哪些是更有价值的
1、架构
源码的架构、结构以及背后的思想。为什么如此选型?为什么这样取舍?
2、设计
用了哪些模式,比如架构模式、设计模式,这样的好处是什么?
3、实现(代码,技术)
经典功能的代码是如何实现,比如:随机算法如何实现的,为什么这么写?为什么使用这个算法?
使用了哪些技术?为什么使用这些技术?如何使用的?等。
后记
学习源码是为了对开源项目更熟悉,以便于更好的使用或防范。除此之外,源码阅读中学到的知识、经验或许是能力提升更大的方面。