• 如何通过阅读文档,构建概念模型?


    上一篇,我们通过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展示结果

     

     

    总结

    本文通过对文档的理解,梳理出概念模型。并通过概念模型来完善黑盒模型。实际上,随着我们对项目的理解,黑盒模型会慢慢的变成白盒模型。
    有了对项目的概念模型后,下面我们可以真正的来阅读项目源码了。

     

  • 相关阅读:
    Scala爬虫如何实时采集天气数据?
    Linux-相关操作
    基于51单片机的红外遥控器设计
    java学习day57(Spring Cloud)Spring Cloud 微服务
    Magisk Delta以及EdXposed工具在逍遥模拟器上安装教程
    用一个极致简单的场景演练领域建模
    每日一题 146. LRU 缓存
    智源社区周刊:Gary Marcus谈大模型研究可借鉴的三个因素;OpenAI提出视频预训练模型VPT,可玩MC游戏...
    leetCode 279.完全平方数 动态规划 + 完全背包
    为什么 CSS flex 布局中没有 `justify-items` 和 `justify-self`?
  • 原文地址:https://www.cnblogs.com/ivaneye/p/16023794.html