微软最近发布了测试驱动开发的方案(点击这里)。这些方案与Visual Studio 2005 Team System的使用密不可分。老实说,我对他们试图去把他们自己的工具与TDD(译注1)绑定起来并不觉得什么。他们是个商业机构,而这就是一种商业行为。让我觉得什么的,是他们如此完全的曲解了TDD,甚至反其道而行之。如果工具不支持TDD(它的确不能)的话,他们不应该声明它能够。
在最近一篇blog(译注:此篇已翻译为中文)中我描述了TDD,做为三项紧密相连的规则之一,它强调创建单元测试和产品代码之间的非常紧凑地迭代。而微软的定义将其描述成一种瀑布式:
- 分析需求,产生一个单元测试列表
- 用设计工具设计类
- 用设计工具生成单元测试代码
- 实现设计并使单元测试通过
Micheal Feather(译注2)的blog中给予了评论,我觉得还是过于温和了。我认为微软应该收回这些方案,而且试着去找出一些这个工具能真正支持TDD的方法。只是因为他们的工具只能按照那样来支持,就把TDD重新定义成为一种瀑布式的,这对这个行业来说是没有多大帮助的,况且大多数程序员都已经清楚地意识到了这一点。如果微软想赢得更多程序员的青睐,他们最好试着去找出行业的真实取向,而不是让行业去迎合这个工具。恕我直言,他们应该认真的去借鉴Eclipse,和IntelliJ == 尤其是IntelliJ。
底线:我们不需要一些帮助我们更好的去做瀑布式开发的工具。我们不需要一些过程空洞,而且用14个线性步骤来描述一些不是却声明是TDD的指导方案。我们不必一定靠Visual Studio。我们需要Microsoft提供的是他们可以不要再谈论什么了,聆听吧。
译注:
1,TDD,全称是测试驱动开发,一种典型的敏捷开发方法。
2,Micheal Feather,敏捷社区的活跃分子,Object Mentor的一员。
(原文链接网址:http://www.butunclebob.com/ArticleS.UncleBob.MsTdd; Robert C. Martin的英文blog网址: http://www.butunclebob.com/ArticleS.UncleBob)
作者简介:Robert C. Martin是Object Mentor公司总裁,面向对象设计、模式、UML、敏捷方法学和极限编程领域内的资深顾问。他不仅是Jolt获奖图书《敏捷软件开发:原则、模式与实践》(中文版)(《敏捷软件开发》(英文影印版))的作者,还是畅销书Designing Object-Oriented C++ Applications Using the Booch Method的作者。Martin是Pattern Languages of Program Design 3和More C++ Gems的主编,并与James Newkirk合著了XP in Practice。他是国际程序员大会上著名的发言人,并在C++ Report杂志担任过4年的编辑。