测试驱动开发适合初学者吗?

10

在我掌握从 问题描述到代码 的过程中,有两个人提到了测试驱动开发(TDD)。

对于一个初学者来说,学习TDD是否好处多多(并避免将来的不良习惯)?或者在了解编程语言的阶段学习TDD是否太复杂呢?

14个回答

9

TDD旨在比“传统”方法(即不测试到最后)更简单-因为测试可以澄清您对问题的理解。如果您实际上没有清楚地了解问题,编写测试将非常困难。

因此,对于初学者来说,编写测试可以使思维活跃并朝着正确的方向进行,这是合同行为,而不是实现行为。


4

如果我在开始学习编程时就有TDD(测试驱动开发)并且在习惯了“老方法”之前掌握了它,那该多好啊。现在想要学习TDD已经很困难了。


2
我同意。我认为自己是一名相当有经验的程序员,但我发现TDD的学习曲线非常陡峭。如果你正在编写一个数学函数库,那么这很容易,但测试真实世界的业务问题似乎是TDD的难点所在。 - Damien

4

体验TDD规则的重要性

我认为,在学习初期,采用TDD理念会非常有帮助。回顾过去,我知道这种方法可以让我以全新的方式来解决问题。

但是,当一个人在学习时,会吸收很多新概念,很容易就会产生困惑。因此,虽然我认为TDD会非常有帮助,但我不认为自学是成功的途径。

就像生活中的其他事情一样,当有人亲自教授时,我们往往能够更好地学习。看到别人如何运用TDD方法来解决问题,比在书本或网络上阅读相关内容要更加有效。当然,阅读也是有益的,但它并不能代替真正的导师。

体验TDD是至关重要的,如果你能在学习初期找到一个能够教授你如何使用TDD的人,那么整个学习过程将超出你的预期。


3
def self.learn_tdd_and_programming_together?
  if you_have_tdd_mentor_sitting_next_to_you?
    "go for it"
  else
    if language.ruby?
      "it's possible, there is quite a bit of good stuff out 
      there that could give you a chance of learning programming 
      with TDD from the start. It's sort of in the ruby culture"
    elsif language.dot_net?
      "learn TDD after you learn the basics of .NET"  
    end
  end
end

1

这确实需要花费很多精力,但话说回来,我希望一开始就写单元测试。如果我在工作场所有一位能够引导我的TDD进步的导师,那将真正有益。我已经自学TDD大约一年了,涉及的内容很多,而且你越做越深入,但现在它对我产生了很大的好处。


1

我认为这个评论说明了对于初学者来说直接学习编程可以是一件非常好的事情。


1

我的编程座右铭是:

  1. 让它运行 - 程序解决问题
  2. 让它正确 - 程序设计清晰,没有重复的部分
  3. 让它快速 - 优化(如果需要)

测试驱动开发处理前两个。

我认为初学者应该学习TDD,这样他就知道如何使程序运行。在我看来,只有这样才能教授好的设计技巧。


1

我认为是的。研究甚至发现对于初学者来说,好处最大。它为您编写代码提供更多指导。您知道结果和行为应该是什么,并编写测试。然后再编写代码。测试通过。完成了。而且你知道你完成了。


2
我不确定我是否同意。我认为将问题描述为测试通常需要大量的知识和技能。 - Damien

0

是的!绝对没问题。


这并没有提供问题的答案。如果您想对作者进行批评或请求澄清,请在他们的帖子下留言。 - phs
@phs 实际上,它确实回答了这个问题...“对于初学者来说,进入TDD是否好?”。只是这不是一个适合在Stack Overflow上提问的好问题。 - saluce

0

我认为对于刚开始学习编程的人来说,这并不是一个好方法。那个人怎么知道该断言什么呢?:P TDD 是用于设计而非测试的。一旦一个人掌握了编程技能,开始学习 TDD 方法会是一件好事。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接