个人对于TDD的些微看法

首次在blog中写些看法,因为总觉得个人的看法肤浅而凌乱。
最近第二次读Test-Driven Development A Practical Guide,比起第一次有些实在的看法,就写下来,权当学习,因为其中很多是问题的形式,自问自答,却也答不满意。
测试驱动开发最大的应用环境是轻载软件过程,尤其应用于XP(极限编程)。TDD强调几个重要的方面,第一,注重重构Refactoring,无论对测试代码或者被测试代码,均需要Small-Step的Refactoring。第二,注重意识编程(Programming by intention),在代码中融入明确的意识,通过合理的命名法则以及程序结构(易读性),实际上我想软件工程的基本思想总是在指导我们工作,目前的各项软件过程注重传统软件工程理论的某个方面,以至拓展出有个性的领域。第三,每一次的测试失败,产生新的代码,No test Failed,No new code 。
关于以上几点,我个人的看法是:重构是必须的,但是软件过程中预期性的设计可以避免大量的重构工作,感觉阶段性,即时的refactoring对于工作效率提高是个障碍。意识编程值得提倡,这点是一个优秀的程序员必须做到的,毋庸置疑,通过写代码说明,代码备注来增加程序的可读性,我想,出现这种情况,首先要反思个人的编程意图是否清晰,小段程序的流程设计是否合理等等。TDD,顾名思义,测试驱动开发,驱动,我们对某些行为的驱动可以理解为直接的或者间接的,按照书本的理论,TDD之Driven就是直接的,没有测试代码,不可能产生工作代码。在现实的工作中,使用Java、.net或者任何面向对象的语言编写一个类,对于一个普通的程序员,是件轻松的事情,是否有必要通过一次次的失败,完成该类的框架呢?同样我也认为这对提高工作效率是个障碍。
关于Logical Layer以及GUI的测试,当前测试工具对GUI/Bussiness Layer的支持程度,TDD适合开发的软件的哪个过程,将在下次继续。

相关文章

迭代器模式(Iterator)迭代器模式(Iterator)[Cursor]意图...
高性能IO模型浅析服务器端编程经常需要构造高性能的IO模型,...
策略模式(Strategy)策略模式(Strategy)[Policy]意图:定...
访问者模式(Visitor)访问者模式(Visitor)意图:表示一个...
命令模式(Command)命令模式(Command)[Action/Transactio...
生成器模式(Builder)生成器模式(Builder)意图:将一个对...