提出了一种新的开发方式:以测试为驱动。在此,我仍然想引用一个曾经看过的ThoughtWorks的
一个人的Blog中的一句话:“什么是TDD?TDD就是把你的需求用测试给描述出来。”这句话一下
子让我明白了TDD的意义,并且被我个人奉为TDD中的经典 :)
归根到底,TDD的实质仍然是以需求来驱动开发,只是,TDD中把需求进一步写成了测试,那
就成了测试驱动开发了。
这么做的好处是什么?我想至少有以下这么几条:
1、你的代码是可测试的。
2、你的代码完全反应了需求。
3、通过测试驱动,会规范你的代码和结构,甚至架构。
不错,我承认,TDD会带来成本的提高。因为我们要写测试,所以必然要花费时间。那么这部分
的成本谁来买单呢?客户吗?这很难,因为毕竟大部分的客户已经在软件的本身就和你讨价还价
了,你还想让客户再为测试来买单?
让老板买单?老板恐怕要为此付出加班费。舍得,还是舍不得?这似乎又变成了一个哲学的问
题。
自己来买单?也就是自己白加班来做这些事。值得,还是不值得?这似乎又是一个职业态度的
问题。
如果单从理论上,每种买单方式都可以写厚厚的文字去论证,不过这么做其实并没有很大的意
义,我还是从实践中说起。
写在后面:简而言之,TDD是敏捷开发的一种。这篇文章年头蛮老了,敏捷开发现在还在提,很多公司跃跃欲试,可是却不敢轻易尝试。我想路途还任重道远。其中的原因这篇文章也详细提到了。