|
1 | 1 | ## 1 前言
|
2 | | -本文接上篇文章[跟大家聊聊我们为什么要学习源码?学习源码对我们有用吗?](https://juejin.im/post/5e4b56a8f265da575d20d6e8),那么本篇文章再继续跟小伙伴们聊聊源码这个话题。 |
| 2 | +本文接上篇文章[跟大家聊聊我们为什么要学习源码?学习源码对我们有用吗?](https://github.com/yuanmabiji/Java-SourceCode-Blogs/blob/master/%E8%B7%9F%E5%A4%A7%E5%AE%B6%E8%81%8A%E8%81%8A%E6%88%91%E4%BB%AC%E4%B8%BA%E4%BB%80%E4%B9%88%E8%A6%81%E5%AD%A6%E4%B9%A0%E6%BA%90%E7%A0%81%EF%BC%9F%E5%AD%A6%E4%B9%A0%E6%BA%90%E7%A0%81%E5%AF%B9%E6%88%91%E4%BB%AC%E6%9C%89%E7%94%A8%E5%90%97%EF%BC%9F.md),那么本篇文章再继续跟小伙伴们聊聊源码这个话题。 |
3 | 3 |
|
4 | 4 | 在工作之余开始写SpringBoot源码分析专栏前,跟小伙伴们聊聊"**分析开源项目源码,我们该如何入手分析?**"这个话题,我们就随便扯皮,反正是跟小伙伴们一起学习交流,没必要太正式。
|
5 | 5 | >小伙伴们看完本文后,若有自己的源码阅读心得可以在下面进行评论或私聊我进行分享,**让我从小伙伴们身上GET多点源码阅读的一些技巧**,嘿嘿。
|
|
11 | 11 | 1. **一个能流行起来的成熟的开源项目必定功能齐全,可扩展,而功能齐全可扩展的开源项目必定很复杂,代码量大**。比如Spring5框架的源码行数达到了六七十万行,SpringBoot的源码行数达到了25万行左右,Dubbo和RocketMQ的源码行数达到了10万行。一个成熟的开源项目代码量这么多,可以想象其有多复杂。
|
12 | 12 | 2. **阅读源码时,我们有时候无法猜透源码作者当时编码时的想法**。因为在刚开始阅读源码的过程中,我们肯定会遇到很不懂的代码,不知道作者为何这么写,为何在这个位置写代码,这些都是很正常的,因为当初作者为啥这么写,可能是针对一些比较特殊的业务场景,或者为了某方面的性能等等,我们根本无法猜透。打个不太恰当的比喻,阅读源码猜测作者的心思就像当初遇到一个自己喜欢的姑娘,猜测她的心思一样,比如猜测她喜欢什么,她的兴趣爱好是什么。其实刚开始阅读源码也一样,有些地方我们一开始是无法猜透作者的心思的。
|
13 | 13 | 3. **有些开源框架可能集操作系统知识,数据结构,算法和设计模式于一身**。是的,优秀的框架必定是集成了很多设计模式于一身,目前为止笔者还没见过哪种流行的又没有应用设计模式的框架哈。比如很多框架运用了单例模式,工厂模式,责任链模式,装饰器模式和模板方法模式等,因为使用设计模式能让框架易于扩展。同时,不乏一些框架应用了一些操作系统层面的知识,这一块比较底层,相信很多学java的小伙伴没接触过。此外,开源框架某些地方会用到数据结构和算法,举个栗子,比如Dubbo默认有四种负载均衡策略,而每种策略又对应一种算法,其中又数RoundRobinLoadBalance负载均衡策略最复杂,一开始实现RoundRobinLoadBalance负载均衡的方式并不太完美或者说有bug,Dubbo也是重写过RoundRobinLoadBalance几次,**最终借鉴了Nginx的RoundRobinLoadBalance负载均衡算法**。
|
14 | | - >上篇文章《[跟大家聊聊我们为什么要学习源码?学习源码对我们有用吗?](https://juejin.im/post/5e4b56a8f265da575d20d6e8)》也说过优秀框架之间的思想都是互相借鉴的,这就是我们要学习源码的原因之一。 |
| 14 | + >上篇文章《[跟大家聊聊我们为什么要学习源码?学习源码对我们有用吗?](https://github.com/yuanmabiji/Java-SourceCode-Blogs/blob/master/%E8%B7%9F%E5%A4%A7%E5%AE%B6%E8%81%8A%E8%81%8A%E6%88%91%E4%BB%AC%E4%B8%BA%E4%BB%80%E4%B9%88%E8%A6%81%E5%AD%A6%E4%B9%A0%E6%BA%90%E7%A0%81%EF%BC%9F%E5%AD%A6%E4%B9%A0%E6%BA%90%E7%A0%81%E5%AF%B9%E6%88%91%E4%BB%AC%E6%9C%89%E7%94%A8%E5%90%97%EF%BC%9F.md)》也说过优秀框架之间的思想都是互相借鉴的,这就是我们要学习源码的原因之一。 |
15 | 15 |
|
16 | 16 | 这里好像扯的有点远了,总之这里要说明的是阅读优秀框架是有一定难度的。
|
17 | 17 | 4. **有些开源框架注释太少也增加了阅读源码的难度**。说到开源项目注释,如果我们阅读老外写的的框架源码可能还好,一般都会有大量注释,比如Spring框架,可以说几乎每个方法都有注释,这个就给我们阅读源码起了很大的帮助。不过唯一不好的可能就是英文注释,阅读对英语有一定的要求。其实英文注释还好,遇到不懂的,百度翻一下就好了。其实比较头疼的就是一些国内优秀的开源框架,其注释可以说是很少的,这无疑大大增加了阅读的难度,甚至有些框架的文档也不齐全,那就更加GG了。
|
|
0 commit comments