九折技术 九折技术
首页
  • Go
  • MIT-6824
  • 算法与数据结构
  • 面向对象
  • 代码整洁
  • 重构
  • 设计模式
  • 学习
  • 技术
  • 人文
关于
  • 网站
  • 资源
  • 分类
  • 标签
  • 归档
GitHub

HoldDie

长期有耐心,一切才刚刚开始!
首页
  • Go
  • MIT-6824
  • 算法与数据结构
  • 面向对象
  • 代码整洁
  • 重构
  • 设计模式
  • 学习
  • 技术
  • 人文
关于
  • 网站
  • 资源
  • 分类
  • 标签
  • 归档
GitHub
  • 代码整洁

  • 重构

    • 重构要点
    • 重构技术手段
    • 可测试性代码
      • 解耦代码
    • 设计模式

    • 架构
    • 重构
    holddie
    2020-08-24

    可测试性代码

    # 什么是代码的可测试性?

    粗略地讲,所谓代码的可测试性,就是针对代码编写单元测试的难易程度。对于一段代码,如果很难为其编写单元测试,或者单元测试写起来很费劲,需要依靠单元测试框架中很高级的特性,那往往就意味着代码设计得不够合理,代码的可测试性不好。

    # 编写可测试性代码的最有效手段?

    依赖注入是编写可测试性代码的最有效手段。通过依赖注入,我们在编写单元测试的时候,可以通过 mock 的方法解依赖外部服务,这也是我们在编写单元测试的过程中最有技术挑战的地方。

    # 常见的 Anti-Patterns

    • 代码中包含未决行为逻辑
      • 未决行为逻辑:代码的输出是随机或者说不确定
      • 一般可以对未决行为逻辑进行封装方法
    • 滥用可变全局变量
      • 滥用全局变量可能造成,在使用并行执行单元测试时,结果不一致
    • 滥用静态方法
      • 静态方法和静态变量类似,只有这个静态方法执行耗时太长、依赖外部资源、逻辑复杂、行为未决等情况下,我们才需要再单元测试中 mock 这个静态方法。
    • 使用复杂的继承关系
      • 如果我们利用组合而非继承来组织类之间的关系,类之间的结构层次比较扁平,在编写单元测试的时候,只需要 mock 类所组合依赖的对象即可。
    • 高度耦合的代码
      • 如果一个类职责很重,需要依赖十几个外部对象才能完成工作,代码高度耦合,那我们在编写单元测试的时候,可能需要 mock 这十几个依赖的对象。
      • 不管是从代码设计的角度来说,还是从编写单元测试的角度来说,这都是不合理的。
    编辑
    #可测试性#重构
    上次更新: 2020/08/24, 10:08:00
    重构技术手段
    解耦代码

    ← 重构技术手段 解耦代码→

    最近更新
    01
    行为型-访问者模式
    11-24
    02
    行为型-备忘录模式
    11-24
    03
    行为型-命令模式
    11-24
    更多文章>
    Theme by Vdoing | Copyright © 2019-2020 HoldDie | MIT License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式