也论TDD

本文探讨了测试驱动开发(TDD)的局限性及其在软件开发中的正确位置。作者认为TDD被一些开发者过分夸大其作用,实际上它仅是一种防止引入bug的方法之一,并不适合所有场景。更重要的是,良好的系统架构和设计才是关键。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

写这篇短文的原因是:
1,公司内部最近在讨论[url=http://coolshell.cn/?p=2424]十条不错的编程观点[/url]
2,看到这篇博客[url=http://dreamhead.blogbus.com/logs/63646898.html]争论TDD[/url]

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

我的论据:在[url=http://coolshell.cn/?p=2424]十条不错的编程观点[/url]里第一条和最后一条里已经解释的很清楚了,另外早在05年的一个帖子[url=http://www.iteye.com/topic/11590]TDD能带我们去哪里?[/url]里作者也阐述的非常清楚。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值