对于小型项目,TDD是否过度杀伤?

Ear*_*rlz 42 language-agnostic tdd methodology

我最近一直在阅读关于TDD的内容,而且我现在还没有完全卖掉它......我做了很多小的爱好项目(只有我)而且我担心如果试图做TDD是过度的这样的事情.虽然我已经看到过3个开发人员做TDD的小型开源项目.(虽然我看过一些同样做TDD的单人项目)

那么TDD总是一件好事,或者在什么门槛上使用它是有意义的?

Fra*_*ham 42

小项目可能有习惯在没有意识到的情况下变成大项目,然后你希望你开始使用TDD :)


hob*_*ave 34

TDD在小型项目中大放异彩.在一个小项目中坚持TDD 通常容易得多,而且这是练习并获得遵循TDD所需的纪律的好时机.

根据我的经验,较大的项目倾向于在某个门槛上放弃TDD.(我不是说这是件好事).

我认为较大的项目倾向于放弃它,原因有两个:

  • 开发人员缺乏经验 - 无论是一般还是TDD
  • 时间限制---较大的项目本质上更复杂
    • 增加的复杂性导致截止日期超支,单元测试倾向于首先被抛弃
    • 没有经验的团队可能会加剧这种情况

  • 它被抛弃的另一个原因是:没有花费所需的时间来重构测试本身.测试代码变得很快!如果你不熬夜,那么对底层结构的改变可能会产生很大的级联效应.无论如何,去吧! (10认同)
  • +1我的一个朋友试图在一家相当大的公司中引入TDD,虽然他们承认了这些好处,但仍坚持使用广泛使用的代码并修复模型^^. (4认同)
  • +1:时间限制==管理层拒绝接受变革.很多时候,它的管理层坚持要求人们停止测试并开始编写代码. (2认同)

Jör*_*tag 19

根据我的个人经验,我可以说以下内容:

  1. 每次我开始我的个人小爱好项目时,我发誓要用TDD开发它.
  2. 我每次都没有.
  3. 每次我都后悔.


Kal*_*son 17

一切都有成本效益曲线.

忽略TDD的许多有争议的好处,TDD是值得的,如果您的实施将经常变化,使自动测试套件的好处超过初始开发可能涉及的任何额外成本.


duf*_*ymo 10

我总能找到一个有趣的问题.有什么选择?编写您只编译并永不运行以验证其正确性的代码?您是否要等到部署到生产中以确定您的课程是否有效?

如果我们从未有过一个名为TDD的实践,或者在1997年发明JUnit之前,是否没有代码测试?当然有.那么为什么现在你有测试框架可以帮助你呢?

即使是在紧迫的期限内的小项目也不想等到生产才能找出它是否有效.写下测试.

任何"小"的项目都没有必要,但我将"小"定义为少于一个类.

  • 我认为有两种选择可以使问题合理(而不是有趣):( 1)手动测试,(2)在事后而不是之前编写自动化测试. (3认同)
  • 老实说,我没有看到TDD比(1)或(2)更多的工作 - 因此幽默. (2认同)
  • +1:TDD与什么?"手动"测试?这是否意味着人们所做的不完整的测试,你希望他们能够通过外部接口找到锻炼所有类接口的方法.事后测试 - 基于实现的代码?我看不出这些是可行的替代方案.仅仅因为我一直在尝试这样做的项目(现在已有30多年)并没有使它们成为可行的选择. (2认同)

小智 7

矫枉过正?一点也不.除了主要的好处,也就是编写代码,你可以依赖它,因为你已经考虑过它可以破解的方式,你会更加自律,并且可以通过测试驱动开发提高工作效率.选择任何实用的程序员书籍,获取提示和灵感.


Jim*_*iel 6

我会借此机会使用TDD和一个小项目来让你的脚湿透.即使你意识到这不适合你,这将是一个很好的学习经历.


ket*_*urn 6

我从当地敏捷集团的一位成员那里听到的一点是,她没有发现TDD 在项目的最早阶段很有用,在这些阶段你基本上都是快速制作草图,而你却不确定它的形状是什么现在还在.但是只要您对接口的外观有所了解,就可以开始使用测试来帮助您定义它们.

TDD是另一种工具,如文档,可以提高代码的清晰度.当其他人需要使用您的代码时,这是至关重要的,但我们中的许多人发现在回顾我们自己的代码时它非常有用.在离开它一段时间后,你曾经有过一个爱好项目,遇到了一些奇怪的代码,并且想知道"为什么我写这个?"