如何通过阅读文档,构建概念模型()
上一篇,我们通过demo,构建了黑盒模型,大致了解了项目与demo的关系,以及一个初步流程。本节内容如下:
本篇是《如何高效阅读源码》专题的第五篇,通过阅读文档,来了解项目的概念模型,以及验证和完善黑盒模型。
- 为什么要阅读文档
- 到哪里去阅读文档
- 如何阅读文档
- 如何构建概念模型
- 通过概念模型验证与完善黑盒模型
对于一个代码量巨大的项目而言,不论它设计得多么的精妙,如果没有文档的话,一般人很难通过阅读代码来理解项目逻辑。而一个清晰明了的文档,对理解项目来说有很大的帮助。
到哪里去阅读文档 我想没有谁能比项目的开发者更了解自己的项目了!所以,最好的文档就是官方文档。强烈建议直接阅读原文,因为翻译的文章,多多少少都带有个人理解,可能理解的是对的,也可能理解的是错的。翻译的文章可以作为参考,以鉴别自己是否理解错误。
除了官方网站,也可以通过谷歌搜索一些比较好的技术论坛或博客,来阅读对应的博客或帖子。官方文档一般都是比较完整的讲述项目,而博客或帖子可能会从一个点来详细的描述这个项目,对一开始还不是很了解项目的人来说,可能更容易理解一些。
在理解了这些点之后,还是要阅读官方的文档,来将这些点给串起来,这样才能对这个项目有一个完整的理解。
如何阅读文档 文档的阅读不可一蹴而就,就以Spring的文档来说,Spring下的子项目有很多,每个子项目都有文档,少的也有大几十页,多的甚至上千页,要一页一页的看完,是完全不可能的。那我们该如何去读呢?
我们要有目的的去读文档。我们理解项目的阶段不同,目的也就不同。例如,我们现在需要对项目有一个大致的了解,需要能构建项目的概念模型。那我们就要去找描述项目概念的相关文档。
以JUnit为例子,它的官方网址是:https://junit.org/junit4/。我们需要找到网站里描述相关概念的文档。我们会发现,首页就有对应的条目:
![如何通过阅读文档,构建概念模型()](https://img.it610.com/image/info8/9fdd92e1d356429692025c291f6e6d8d.jpg)
文章图片
通过阅读上面列表的文章,我们能大概了解到JUnit中有哪些概念:
- Assertions:断言,用于判断测试结果是否符合预期
- TestRunners:测试执行,各种执行测试的方式。包括下面的参数化测试、理论测试,以及执行JUnit3的相关类等
- Suite:套件,批量执行测试的类
- Rules:规则,扩展JUnit的功能,灵活地改变测试方法的行为
- 各个Test是测试用例
- TestRunners用来执行各种测试
- Assertions用于验证测试结果是否符合预期
- Suite用于批量执行测试
- Rules用于改变测试的行为
![如何通过阅读文档,构建概念模型()](https://img.it610.com/image/info8/07c059732cb947c4855d28c9e55e4983.png)
文章图片
![如何通过阅读文档,构建概念模型()](https://img.it610.com/image/info8/768afef7e64d4759a8afc145a18c6b10.jpg)
文章图片
通过概念模型验证与完善黑盒模型 通过上面的概念模型,结合前面的黑盒模型,我们可以完善黑盒模型:
- 我们既可以编写测试用例Test,也可以编写测试套件Suite
- 测试套件Suite可以添加多个测试用例Test
- 通过TestRunners来执行测试
- 通过Assertions来验证测试结果是否符合预期
- 通过Rules来改变测试的行为
- 最终通过Result展示结果
![如何通过阅读文档,构建概念模型()](https://img.it610.com/image/info8/1f2c24c814b44f91936a95dd462eab5b.jpg)
文章图片
总结 本文通过对文档的理解,梳理出概念模型。并通过概念模型来完善黑盒模型。实际上,随着我们对项目的理解,黑盒模型会慢慢的变成白盒模型。
有了对项目的概念模型后,下面我们可以真正的来阅读项目源码了。
推荐阅读
- 如何维护一个巨大的Android项目呢(阿里大佬分享的高级Android|如何维护一个巨大的Android项目呢?阿里大佬分享的高级Android 组件化实战,你确定不看看)
- springboot如何通过@Value|springboot如何通过@Value,@ConfigurationProperties获取配置
- 如何在中后台领域玩转BFF架构
- 华为云CDN如何提高缓存命中率
- wms系统开源_指南要点(赛事如何玩转开源线上马拉松())
- 大数据|对话阿里云(开源与自研如何共处())
- 数字化时代,如何做好用户体验与应用性能管理
- k8s集群Job负载|k8s集群Job负载 支持多个 Pod 可靠的并发执行,如何权衡利弊选择适合的并行计算模式()
- 不归路之Python|什么是计算机网络(为什么需要网络通信?如何进行网络编程?)
- 通过|通过 AssemblyScript 编写 wasm