我是一名有丰富经验的合同程序员。通常情况下,客户会雇用我单独完成一个软件项目,几乎每次都是从头开始。这意味着几乎每次都需要重新开始。我可以引用我开发的库以便快速启动项目,但这通常是可选的。(并取决于合同中获得正确的知识产权条款)许多时候我可以指定或设计硬件平台...所以这里我们谈论的是真正的自由。
我认为在某些代码方面构建自动测试非常有用:具有复杂功能的库、核心功能被高频使用等等。基本上,随着代码价值通过大量使用逐渐提高,我可以看到自动测试该代码将变得越来越有价值,以便确保不会出现错误。
然而,在我的情况下,我很难理性地证明除此之外还有更多的必要。如果事实证明某些东西有用,我会采纳它们,但我不会盲目跟从任何事物。
我发现我在“维护”中做的许多事情实际上都是小型设计更改。在这种情况下,测试并不能节省我的时间,反而会使我更加繁琐。高度迭代的设计方法对我非常有效,我无法看到更广泛测试可以节省多少时间。
对于个人爱好项目,更难以证明...通常只是周末或一个月左右的时间制作。边缘情况下的错误很少有影响,一切都是关于玩耍。
阅读像这样的问题,其中票数最高的回答似乎表明在那位发布者的经验/意见中,如果你没有超过5个人(即使假定具备某种TDD水平),TDD实际上会浪费时间。但是,这似乎涵盖了初始开发时间,而不是维护阶段。TDD在整个项目生命周期中的效果尚不清楚。
我认为TDD(测试驱动开发)对于改善整个行业产品质量的有益目标来说是一个不错的步骤。但单纯的理想主义已经不能激励我了。
我确实认为在大型团队或包含至少一个不可靠程序员的任何规模的团队中,采用TDD都是一个不错的方法。这不是我的问题。
那么一个有着良好记录的独立开发者为什么要采用TDD呢?
我很乐意听到有关TDD的任何度量(无论是否正式),重点放在独立开发者或非常小的团队上。
如果没有这样的数据,你的个人经验的轶事也是不错的选择。请避免在没有经验支持的情况下陈述观点。让我们不要把这变成一场意识形态战争。同时跳过更好的就业选择的争论,这只是一个效率问题。