我是一名经验丰富的合同程序员。我习惯于被客户雇佣,自己去做一个或另一种形式的软件项目,通常是白手起家。这意味着几乎每次都是白纸黑字。我可以引入我开发的库来快速入门,但它们始终是可选的。(并且取决于在合同中获得正确的 IP 条款)很多时候我可以指定甚至设计硬件平台......所以我们在这里谈论的是严肃的自由。
我可以看到为某些代码构建自动化测试的用途:具有不仅仅是琐碎功能的库、具有大量引用的核心功能等。基本上,随着一段代码的价值通过大量使用而上升,我可以看到它自动测试该代码会越来越有价值,这样我就知道我不会破坏它。
然而,在我的情况下,我发现很难合理化除此之外的任何事情。我会采用被证明有用的东西,但我不会盲目地遵循任何东西。
我发现我在“维护”中所做的许多事情实际上都是很小的设计更改。在这种情况下,测试不会为我节省任何东西,现在它们也必须改变。高度迭代、存根优先的设计方法对我来说非常有效。我看不到通过更广泛的测试实际上为自己节省了那么多时间。
爱好项目更难证明......它们通常是从周末到一个月的任何东西。边缘情况的错误很少有关系,这都是关于玩一些东西。
阅读诸如this one之类的问题,投票最多的回复似乎是说,在该发布者的经验/意见中,如果您的人数少于5人,TDD实际上会浪费时间(即使假设具有一定水平的TDD能力/经验)。但是,这似乎涵盖了初始开发时间,而不是维护时间。目前尚不清楚 TDD 如何在项目的整个生命周期中叠加。
我认为 TDD 可能是朝着提高整个行业产品质量这一有价值目标迈出的重要一步。不过,理想主义本身不再能有效地激励我。
我确实认为 TDD 在大型团队或包含至少一个不可靠程序员的任何规模的团队中是一种好方法。那不是我的问题。
为什么拥有良好记录的唯一开发人员会采用 TDD?
我很想听听关于 TDD 的任何类型的指标(正式或非正式)......专注于单独的开发人员或非常小的团队。
如果做不到这一点,你个人经历的轶事也会很好。:)
请避免在没有经验的情况下发表意见来支持它。让我们不要把这变成一场意识形态战争。还有跳过更多就业选择的论点。 这只是一个效率问题。