由于敏捷开发的流行,TDD的概念近年来在国内被炒得很火,似乎TDD是一个深不可测的东西。
今天在看TDD的文章时,突然有了一个感觉:其实TDD的思想本来就很朴实,反而是我们开发人员一开始就背离了正确的路线和方法。
众所周知,TDD鼓励人们在编写实际的实现代码之前,就先写好测试代码。这一点对大多数程序员来说难以接受,总觉得实现代码都没有写,怎么写测试代码啊。其实我觉得这主要是观念上的误区和行为的惯性所致。
我们知道,开发商盖楼盘时都有一个建筑标准,而业主收楼时也有一个收楼标准。这些标准都是在实际的工程开工之前或业主正式入住之前就已经制定好的。正规的开发商会在建筑的过程中严格按照建筑标准来衡量自己的楼盘建设质量。看到有不符合要求的就马上改正。而不是事先不考虑任何的建筑或验收标准,等到整个楼盘盖好后再来。
这个道理和TDD是一样的,在任何工作开始之前,我们都应该先明确制定工作交付的标准。这一点在需求分析文档中已经明确体现出来了。到了实际编码阶段却反而变成相反了。没有了事实的验收标准,就等于没有了目标,连自己要做成什么模样都不知道,才会出现在联调阶段出现众多的bug而导致返工的情况,另一方面由于没有了验收标准,开发人员经常会出现不知道接口如何设计的困惑。
TDD就是要求我们在编码阶段先制定验收标准,再根据标准来开发。TDD的过程就是根据验收标准不断调整优化的过程,确保你始终沿着预定的目标前进,不会到最后变成一“豆腐渣工程”。
同时为了符合测试程序的要求,您的单元必须设计得可以测试,这迫使您设计程序时,考虑到单元的低耦合。
很多时候技术的思想都很朴实,就像OOP那样,其实OOP本来就来自于日常生活,虽然说做了高层的抽象,但始终可以通过和现实的类比来看到其本质。
-------------------------------------------------------------
生活就像打牌,不是要抓一手好牌,而是要尽力打好一手烂牌。
posted on 2008-01-29 11:36
Paul Lin 阅读(1379)
评论(1) 编辑 收藏 所属分类:
Java 工具