五、TDD
- 此事已有定论。这是定理就如同:
- 此事已有定论
- 争论已经结束
- GOTO是有害的
- TDD确实可行
- TDD三项法则
- 编好失败单元测试之前,不写任何产品代码
- 只要有一个单元测试失败,就不要在写测试代码;无法通过编译也是一种失败
- 产品代码恰好能够让当前失败的单元测试成功通过即可,不要多谢 大概30s就运行一次代码。先写好一个单元测试的一小部分代码;很快发现还缺少一些类和函数,所以单元测试无法编译,因此必须便携产品代码,让测试能编译成功;产品代码够用即可,然后再回头接着写单元测试代码
- TDD 优势
- 确定性:代码覆盖度,可以更有把握交付
- 缺陷注入率:低bug高质量
- 勇气:看到糟糕代码,主动修改,不再惧怕整理代码
- 文档:单元测试即文档。描述了系统设计的最低层设计细节
- 设计:测试会多思考程序实现,减少耦合
- 局限 不是万能的,也有可能写出糟糕的代码,比如测试代码就糟糕