上一篇,我们通过demo,构建了黑盒模型,大致了解了项目与demo的关系,以及一个初步流程。
本篇是《如何高效阅读源码》专题的第五篇,通过阅读文档,来了解项目的概念模型,以及验证和完善黑盒模型。
本节内容如下:
-
为什么要阅读文档
-
到哪里去阅读文档
-
如何阅读文档
-
如何构建概念模型
-
通过概念模型验证与完善黑盒模型
为什么要阅读文档?
Linus大神说过这么一句话:「Talk is cheap,show me the code」!广大程序员都奉为圣经!只是可惜,绝大部分程序员都达不到Linus大神的水平。
对于一个代码量巨大的项目而言,不论它设计得多么的精妙,如果没有文档的话,一般人很难通过阅读代码来理解项目逻辑。而一个清晰明了的文档,对理解项目来说有很大的帮助。
到哪里去阅读文档
我想没有谁能比项目的开发者更了解自己的项目了!所以,最好的文档就是官方文档。强烈建议直接阅读原文,因为翻译的文章,多多少少都带有个人理解,可能理解的是对的,也可能理解的是错的。翻译的文章可以作为参考,以鉴别自己是否理解错误。
除了官方网站,也可以通过谷歌搜索一些比较好的技术论坛或博客,来阅读对应的博客或帖子。官方文档一般都是比较完整的讲述项目,而博客或帖子可能会从一个点来详细的描述这个项目,对一开始还不是很了解项目的人来说,可能更容易理解一些。
在理解了这些点之后,还是要阅读官方的文档,来将这些点给串起来,这样才能对这个项目有一个完整的理解。
如何阅读文档
文档的阅读不可一蹴而就,就以Spring的文档来说,Spring下的子项目有很多,每个子项目都有文档,少的也有大几十页,多的甚至上千页,要一页一页的看完,是完全不可能的。那我们该如何去读呢?
我们要有目的的去读文档。我们理解项目的阶段不同,目的也就不同。例如,我们现在需要对项目有一个大致的了解,需要能构建项目的概念模型。那我们就要去找描述项目概念的相关文档。
以JUnit为例子,它的官方网址是:https://junit.org/junit4/。我们需要找到网站里描述相关概念的文档。我们会发现,首页就有对应的条目:
通过阅读上面列表的文章,我们能大概了解到JUnit中有哪些概念:
-
Assertions:断言,用于判断测试结果是否符合预期
-
TestRunners:测试执行,各种执行测试的方式。包括下面的参数化测试、理论测试,以及执行JUnit3的相关类等
-
Suite:套件,批量执行测试的类
-
Rules:规则,扩展JUnit的功能,灵活地改变测试方法的行为
构建概念模型
从上面的几个概念,再结合我们之前的理解,我们就可以得到一个大致的概念模型:
-
各个Test是测试用例
-
TestRunners用来执行各种测试
-
Assertions用于验证测试结果是否符合预期
-
Suite用于批量执行测试
-
Rules用于改变测试的行为
通过概念模型验证与完善黑盒模型
通过上面的概念模型,结合前面的黑盒模型,我们可以完善黑盒模型:
-
我们既可以编写测试用例Test,也可以编写测试套件Suite
-
测试套件Suite可以添加多个测试用例Test
-
通过TestRunners来执行测试
-
通过Assertions来验证测试结果是否符合预期
-
通过Rules来改变测试的行为
-
最终通过Result展示结果
总结
本文通过对文档的理解,梳理出概念模型。并通过概念模型来完善黑盒模型。实际上,随着我们对项目的理解,黑盒模型会慢慢的变成白盒模型。
有了对项目的概念模型后,下面我们可以真正的来阅读项目源码了。