关于我的书《通用源码阅读指导书》的一些看法和思考

总有人约请我回答,明天有时间就详尽和你们聊一下这个问题吧。

我听到回答里也有人提及了我的书《通用源码阅读指导书》。这本书才刚上架还没几天,就有人提到了,非常荣幸。

本回答将根据下边的章节体系进行:

1 我为什么阅读源码
2 阅读源码的好处
3 阅读源码的困难
4 阅读源码的步骤
5 阅读源码的方法

1我为何阅读源码

图片[1]-关于我的书《通用源码阅读指导书》的一些看法和思考-唐朝资源网

我开始阅读源码是在进行互联网开发的第八九个年头。在此之前,我做过校园网站,接过网站开发的杂活,进行过理论算法相关的研究我要印源码,也设计开发了许多系统。我对我做过的系统都比较有信心,它们也都运行的不错,而且一个疑惑却在我的心头渐渐浮现:我的构架和世界最优良构架之间的差别究竟有多大?

阅读开源项目的源码能给我答案。

许多优秀的开源项目历经数千开发者的数万次递交,被数亿用户使用。这种项目从可扩充性、可靠性、可用性等各个角度审视,都是非常优良的。通过阅读这种项目的源码能让我找到自己在软件设计和开发上的不足。

于是我开始了我的源码阅读计划。

2阅读源码的益处

阅读源码的益处好多,并且早已成为共识。光靠铺天盖地的源码阅读活动能够感知一二,尽管我觉得这些活动都太过浮躁,主要是个噱头,学不到啥。

并且不可证实,阅读源码的益处极多,包括但不限于:

所以,我有些懊悔,我觉得我应当更早地开始源码阅读。我推荐进行源码阅读的时机是:学会编程语言的基本知识,并做过少量项目以后。

我们晓得,学编程的过程中在不断接收新的知识,进步很快。刚开始做项目时,步入实践领域,进步很快。之后就到了平台期,可能几年出来都是重复的增删改查,毫无进步。这段平台期实际是进行源码阅读的良好时机,能让你的技术持续进步。

图片[2]-关于我的书《通用源码阅读指导书》的一些看法和思考-唐朝资源网

3阅读源码的困难

当我们阅读一份源码时,须要面对的困难一般有:

所以好多人虽然晓得阅读源码的用处,也坚持不出来。就由于以上困难无法克服。

而阅读源码的难,是正常的。

3.1时间维度带来的困难

从时间维度上看,每一个优秀的工程项目都经历了从雏型到成熟的坎坷演变过程。而整个过程就会被映射到一个时间点上,肯定很难。

于是有人提出了“阅读源码时,从第一次递交开始阅读”的主意。我要说一下,这是错误的!

这是一种纸上谈兵式的错误,提出这些技巧的人肯定没怎样读过源码。事实上,我也有过这些看法,之后在实践中很快被抛弃了。

假如一个项目只经过了几次递交,这些方式获取可行。而一个优秀的一般有几千上万次递交,将这几千上万次递交都读完,工作量要比把当前最新版本的代码读完难的多得多!由于其时间维度的复杂度比空间维度复杂度大得多了。

我用下边的图片展示了项目发展的过程,一个项目从版本1到版本n,逐步建立。版本1通常是最简单最基础的,然而,要想从版本1读起,仍然读到版本n,可能要阅读几千个版本。难度极大,远不如直接去读版本n。

图片[3]-关于我的书《通用源码阅读指导书》的一些看法和思考-唐朝资源网

还有,许多项目的第一次递交并不是只有几行代码的init项目,常常第一次递交就是几百个类。并且,早期的代码组织还比较混乱。虽然,作者也不晓得该项目能火,常常比较随便。

更别说,历史递交中还参杂好多的Bug、回退、依赖包升级等等。想要把每次Bug、回退、依赖包升级所形成的历史背景都认清楚,这几乎是不可能的任务。

3.2空间维度的困难

每一个优秀的工程项目都汇聚了诸多开发者的周密思维逻辑,而这种逻辑都被投射到了平面的代码上。这促使阅读源码的过程成了逆推开发者思维逻辑的过程,其实,逆推是很难的。

不过,这方面的困难真有解决方案:详尽了解开源项目的功能,之后自己寻思该怎样实现。

这样我要印源码,就将“逆推”的过程转化为了“正向推论+验证”的过程,这样就相对简单了。

但无论怎样,阅读源码总不会太简单。于是有人说看懂源码比编撰源码更为困难,想必也是有一定道理的。

图片[4]-关于我的书《通用源码阅读指导书》的一些看法和思考-唐朝资源网

4阅读源码的步骤

阅读源码推荐根据下边的步骤进行:

了解项目的背景。这相当于了解了项目的需求。充分了解项目的功能,并熟练使用。我们说过,将“逆推”的过程转化为“正向推论+验证”的过程是阅读源码的一个重要方式。而了解项目的功能是这个技巧的基础。调试代码。通过断点调试,把握整个代码的流程迈向、主次关系、依赖关系。界定源码。按照每位包、模块的功能不同,将源码界定为几个部份。由底层到下层,挨个击破。先阅读不依赖其他模块的,或则依赖其他模块比较少的基础模块。之后逐渐上移,完成整个项目源码的阅读。纵向总结。在由底层到下层阅读完成后,纵向以功能点为维度串联源码的实现逻辑。

通常情况下,一个项目的源码要在3~4个月左右读完。否则,可能读到旁边的,早已忘掉后面的功能了。

其实越快越好,但考虑到我猿们还要加班,时间太紧了不太现实。

5阅读源码的方式

有人说看懂源码比编撰源码更为困难,不无道理。而源码阅读和软件开发一样,是一个十分综合的能力,没有一个万全之法。但有好多不错的方式。

比如一些常用的方式:

还有好多方式,不再一一介绍。由于没有实在的源码案例,光介绍变得很浮。

假如你们真的决定阅读源码,开始提高自己构架能力和编程能力的新阶段,可以阅读《通用源码阅读指导书——MyBatis源码解读》。

是一本以MyBatis源码为材料,详尽介绍源码阅读相关技巧和方法的源码阅读指导书籍。

该书以实际开源项目MyBatis为例,详尽介绍了源码阅读的经验和技巧。在源码阅读中,透彻剖析了相关的背景知识、组织形式、逻辑结构、实现细节。在本书的讲解中,不漏过每一个类,不跳过每一个难点,做到深浅一致。并对那些源码阅读方式进行了进一步的总结整理。

阅读源码会使你有很大的提高,而且这个过程也确实须要你沉下心来渐渐进行。

但我保证,只要你读完一个项目的源码,还会收获巨大。

最后,用书籍序言中的一句话结尾。

图片[5]-关于我的书《通用源码阅读指导书》的一些看法和思考-唐朝资源网

我是中级软件构架师易哥,欢迎你们关注我。

我会时常分享软件构架和编程相关的知识方法。

© 版权声明
THE END
喜欢就支持一下吧
点赞156赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容