在阅读了这篇帖子之后,我觉得自己和问这个问题的人有着同样的立场。我喜欢科技,想出解决现实世界问题的新思路,只是让我的神经元变得很饥渴,但方程的另一部分--实际完成(快速)--通常是要完成的痛苦,特别是当我为自己做这件事时。
有时我对代码感到很厌烦,有时我会花更多的时间在文本编辑器中移动光标,盯着我的代码,试图想出一个比我已经拥有的解决方案更好的解决方案。我听说这是一种叫做完美主义的病。
我在同一篇文章中读到过(在这里也读过几次),TDD实际上很好地阻止了像女孩一样编码,但是我从来没有给过TDD的机会--要么是因为我懒得学习/设置它,要么是因为我认为我不需要它,因为我可以做我头脑中需要的所有测试。
PS:我主要(但不完全)在这里使用PHP。
发布于 2009-09-01 03:39:03
就我个人而言,我认为TDD充其量是过火的,在最坏的情况下,它阻碍了编程的创造性过程。为每个尚未编写的方法/类费力地编写单元测试的时间最好花在解决原来的问题上。尽管如此,我是单元测试的忠实粉丝,并且全心全意地相信它们。如果我有一段特别复杂或麻烦的代码,我很乐意为一个方法编写20个单元测试,但通常是在我解决了问题之后。TDD和其他编程范式一样,并不是灵丹妙药。如果适合的话,如果不继续找,你就用它。
不过,听我的意见就行了。一个更有趣的例子来自肯特贝克和你的单元测试有多深?。
发布于 2009-09-01 03:43:41
,您是否也相信TDD实际上对GTD有帮助呢?,我最关心的就是不能测试代码。太复杂了。我们的核心库不是围绕一个易于测试的界面构建的。所以我们尽我们所能来做测试。最后,我们最终重构了我们的核心库,以使生活变得更容易。除此之外,这是一种思维方式的改变,我肯定会考虑在您的第一个TDD项目上分配更多的时间,以解决您在此过程中可能遇到的一些问题。
关于TDD我需要了解什么?TDD不能代替一种方法。这是一个有益的补充,或至少应该是。如果做得好,TDD大大改进了软件设计。它还充当您的内部文档。如果您希望有人查看您的API并了解它是如何工作的,他们可以简单地查看您命名良好的一个已形成的测试。
,TDD的替代方案呢?,就像我说的,我不认为这是一种方法的替代品。还有一种选择,那就是不使用它:)
什么是组织/开发TDD网络应用的最佳方法?我们在scrum/敏捷方面已经相当成功了,如果这就是你想要的话。
我应该使用哪些库(如果有的话)来简化我的生活?我的PHP知识5年前就已经过期了,我会让其他人回答这个问题。
不管是哪种,只要我的2分钱。如果你想阅读这里是一个很好的概述:http://www.agiledata.org/essays/tdd.html
发布于 2009-09-01 07:59:12
我最近开始使用"fat模型瘦控制器“http://www.amitshah.in/php/controller-vs-model.html:尽可能多地将代码放入模型(以及视图/控制器之外)。
我使用PHPUnit (以及对它的支持)来测试我的web应用程序中的几个复杂模型。编写单元测试,彻底检查执行简单SQL查询的2行函数是浪费时间,IMHO。在过去的几年里,我在编写测试时变得越来越懒惰,而对于大多数web应用程序来说,这并不值得,因为代码太简单了。
但在最近的一个项目中(一个电子商务网站,用复合产品跟踪多个仓库的库存水平),我开始进行测试优先开发,因为我知道会有很多微妙的复杂性,而我不可能一次就把它记在脑子里。唯一的办法,使所有的工作,因为我的想法发展,是写一些测试。对于某些部分,编写类似乎比编写测试更自然,其他部分首先进行测试,而其他部分则不需要测试,因为它们很琐碎。TDD是一种工具,而不是宗教。当它起作用的时候就用它,如果它不起作用就停下来。
在我看来,TDD的好处在于减少了复杂性并提高了速度(解决问题的速度)。如果我编写了一些测试来证明我的代码工作正常,那么一旦所有的测试都通过了,我就可以继续讨论下一个问题。这让我重新回到了编码的乐趣。
https://stackoverflow.com/questions/1360357
复制相似问题