也论TDD

写这篇短文的原因是:
1,公司内部最近在讨论 十条不错的编程观点
2,看到这篇博客 争论TDD

我想表达的观点是:TDD只是用来达到一个不是很重要(相比另外一个更重要的目的而言)的目的(防止你不会因为一个改动而引入Bug)的一种方式(还有其他很多方式),却被部分人当做“银弹”来标榜自己有多敏捷甚至自己用了TDD然后自己的程序设计和代码质量多么好。

我的论据:在 十条不错的编程观点里第一条和最后一条里已经解释的很清楚了,另外早在05年的一个帖子 TDD能带我们去哪里?里作者也阐述的非常清楚。

引申几句:
1,TDD只是软件开发里一个小技巧,它所能解决的问题也十分有限,不适合大家拿来往自己身上贴金。忽悠忽悠外行还行,让内行人拿来看笑话就不好了。
2,即使要解决有限的问题,TDD的适用场景也十分有限。比如GUI程序开发,比如数据仓库建模,比如Web前端JavaScript程序等等,由于单元测试工具不完善,还真是不方便使用TDD。
3,上面提到的另外一个更重要的目的是:系统架构和设计。要实现这个目的,还真得靠经验积累和思考实践,不是用了TDD这一点小小的改进就万事大吉了。说到底软件开发是脑力劳动,需要考验人的经验和智慧,企图用流程改进来解决软件开发的终极问题是扯淡。而且发明TDD的人根本没有提到TDD能提高程序设计和代码质量,您要是还继续霸王硬上弓就没意思了。有兴趣的可以移步 wiki继续围观:
引用

A 2005 study found that using TDD meant writing more tests and, in turn, programmers that wrote more tests tended to be more productive.[6]  Hypotheses relating to code quality and a more direct correlation between TDD and productivity were inconclusive.[7]

^  Proffitt, Jacob. "TDD Proven Effective! Or is it?". http://theruntime.com/blogs/jacob/archive/2008/01/22/tdd-proven-effective-or-is-it.aspx. Retrieved 2008-02-21. "So TDD's relationship to quality is problematic at best. Its relationship to productivity is more interesting.

猜你喜欢

转载自hideto.iteye.com/blog/670565
TDD
今日推荐