1.5 TDD的好处
正如很多其他技巧,如打桌球或者高山滑雪一样,TDD也要花相当长的时间来练习。许多开发者已经接受了这种技术,而且再也不想回到从前“后期调试式编程”的方式去了。这里罗列出一些TDD实践者所描述的好处:
产生的bug更少
- 无论小的还是大到可以在现场产生灾难性结果的逻辑错误,TDD都能在开发时快速发现。缺陷就这样避免了。
调试时间更短
- 更少的bug自然意味着更短的调试时间,就是这么简单。
边际效应所带来的bug更少
- 测试会绑定假定、约束并给出使用范例。当新代码违反了这些假定或约束,测试给出警告。
单元测试是“不会说谎的文档”
- 精心构建的测试可以成为可执行且无歧义的文档。千言万语也没有一个可工作的示例能说明问题。
内心的平静
- 彻底、全面的回归测试给予我们信心。TDD开发者据称晚上睡得更香,且周末更少被打扰。
改善设计
- 好的设计一定是可测试的设计。长函数、紧耦合以及复杂的条件判断,这些都会导致复杂且难测试的代码。如果开发者发现对计划中的代码改动很难编写测试,那就说明设计有问题,TDD会在早期给出提示。TDD是监视代码变坏的雷达。
对进度的监控
- 测试跟踪记录了到底现在哪些部分已经可以工作了,以及已经完成了多少工作。它对于“完成”给出了新的估计方法和定义。
有趣且回报丰厚
- TDD不断地给开发者以成就感。你每写一点代码都会完成一些工作,同时你能很清楚它们是正确的。