为什么要TDD?
TDD测试驱动开发。在这两年中,我TDD了几个项目,但不时都有周围的人问我,为什么要TDD呢?开始的时候我就凭着感觉回答了,“用TDD写代码感觉好多了,效果也挺好的” 。但随着后面更多的人问并看到他们听到这种回答后更迷糊的表情,我逐渐意识到我回答可能是由问题的,于是我就想了下面这个故事,有了它,再次面对这样问题的时候我就可以给出一个比较满意的答案了。
一个男的找女朋友通常有两种策略:事前制定标准然后根据标准寻找,或者是,期待偶遇然后凭着感觉。对于前者,需要理性的同时更要有坚持标准的勇气。而对于后者往往容易造就一见钟情。看到美女就可能过于关注美貌而忘记了其性格娇气,遇到温柔的女生也容易忽略兴趣爱好的不合……总之是尽量发现“美”,到头来往往是当初什么都好,后来什么都不好。写程序也是这样,事先没有想好需求,后面即使做单体测试也往往是往代码上靠,目标就是让测试通过。为此在代码和测试之间往往牺牲测试,满不满足最初的要求无所谓。再则,写测试的时候更多是考虑代码实现而忽略最初需求。TDD就是用单体测试规定了需求。单体测试不仅用来测试最终代码,而且用来确定你将要写的代码。
说到这个故事,随便提一个昨晚让我再次联想到TDD的一个电视节目。昨晚挺无聊的就看了一个“交友”节目,女的选男的。最后出场的是一个28岁的千万富婆。经过一轮一轮的拷问,很多男都为了能够活得Man一点都主动放弃了。最后愿意留下被选的是一个24岁的小伙子和39岁的老大哥。可惜啊,千万富婆谁都没选就离开了。原因吗,可能老大哥太老了,小伙子太嫩了。这些我都看懂了,但最让我无法理解的一件事就是,那个小伙子的爱情宣言就是“找一个体贴可爱的灰姑娘”。目标和现实怎么就相差这么大呢?不过从我来看,这个小伙子肯定不适合做TDD,表面有目标,实际还是跟着感觉走。