[关闭]
@SR1s 2018-01-29T05:13:49.000000Z 字数 1142 阅读 1083

脱离源码,分析框架

未分类


在阅读源码分析系列文章的时候,笔者常常在文章中看到源码的片段截取。然而阅读过程中,笔者向来不喜阅读源码,文章中贴出的源码,往往是被笔者略过的。

为什么不喜欢在阅读过程中读源码,原因有三:
1. 阅读源码带来语言思维的切换的开销。
2. 源码是局部的,框架是宏观的。
3. 相比源码,有更好的呈现方式。

先说第一点,编程语言是人类和计算机沟通的桥梁,相比早期的机器语言,现代的高级语言已经没有那么艰深晦涩了,但我们还是必须承认,高级语言并没有那么高级,达不到工程师动动口,机器就能明白无误地执行的地步。也就是说,代码实际上是人类语言向编程语言转换的过程的结晶。而阅读源码,则是这个过程的逆过程。源码分析系列文章,则是将这个逆过程的结果,总结归纳输出而得到,因此,这个结果,必然是以人类语言为载体的。在文章里插入源码,像是中文交流的过程中,突然蹦出了英文一样。大脑需要做一个转换(shift)去适应和解码不同语言。这个转换会打乱阅读的节奏和理解的过程。

笔者要说的第二点是:贴出来的源码只能反应框架某一局部的信息,无法完整地呈现一个框架。贴源码的文章,容易一不小心就陷入细节里,而忽略了框架作为一个整体的设计思想。在上一点里,我提到了编程语言是人类与计算机沟通的桥梁。使用语言是为了思想表达。笔者主动阅读源码的动机有二:一是研究某一特性的细节实现,二则为探寻框架作者的思想表达。前一种情况,笔者会拘泥于实现细节;后一种情况,笔者则力图从框架源码里还原出作者进行代码设计时的思想活动,如需要解决的问题、实现的目标、遵循的编程准则、接口的设计理念、程序设计的方案。就如同面对一座建筑,去还原它的设计图纸,以及图纸上为了达到设计目标修改涂抹的痕迹。从结果去还原过程,去感受作者的思想,达成共鸣。

第三点,也是最后一点。笔者相信,编程也是一种艺术。笔者也相信,思想是能互通的,语言只是一个工具,一种媒介,脱离编程语言,思想也是能以另外的方式做传递。去年下半年开始,很多小伙伴们分享的文章里,开头都会放出一张思维导图,以此作为文章知识的提纲。这是一个很不错的进步。思维导图是一种很不错的用于整理思想的工具。同样的,用于表达思想的工具,简单的有图片、表格,专业点的有UML图,UML图里又有很多细分场景的图表。这些工具都脱离了源码,以比源码更直观的方式,去展现框架的设计和架构思想。他们的存在,也让笔者确认了脱离源码分析框架一事可行性。

故此,笔者会在接下来的学习过程中,力图在不贴源码的情况下,去分析那些优秀的代码,如类库、框架,去还原它们背后的软件设计思想,达到深入浅出的效果。

而对于代码实现细节,笔者则依旧会采取贴合源码的方式来呈现。这类情况包括但不限于:框架、类库使用学习,效果实现展示等。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注