TDD 的基本原则
- 当且仅当存在失败的测试代码时,才开始编写生产代码(让不通过变成通过
- 消除坏味道
- 原则:红/绿/重构(不关心代码结构,只关注功能的积累)
红:让测试变红
绿:最快速度写出测试通过的代码,多烂都可以
重构:消除上一步所产生的所有坏味道,因为测试的存在可以时刻检查功能是否正确,将关注点转移到怎样让代码更好上去
TDD 的核心要素:任务分解法
- 构思软件被使用的方式,把握 对外接口的方向
- 大致构思功能的实现方式,划分所需组件以及组件之间的关系(所谓的架构),没思路也可以不划分
- 根据需求的功能描述拆分功能点,要考虑正确路径和边界条件
- 依照组件以及组件之间的关系,将功能拆分成对应组件
- 针对拆分的结果编写测试,进入红/绿/重构循环
理解需求,并通过测试构成高效的节奏,是有效实施 TDD 的前提
进入重构的先决条件
- 测试全都通过
- 坏味道足够明显
- 重构生产代码的时候不要改测试代码
- 重构测试代码时不要改生产代码(随着功能迭代,测试代码也会冗余,需要及时重构消除冗余代码