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

时间:2008-09-26 03:37:22

标签: tdd

扩展这个问题我是如何学会从 problem description to code 传来的。两个人提到了TDD。

对于初学者来说,进入TDD(并避免将来会出现不良习惯)会不会有好处?或者在理解编程语言是什么时,它是否会过于复杂?

14 个答案:

答案 0 :(得分:8)

TDD意味着比“传统”方法更简单(直到最后才测试它) - 因为测试澄清了你对问题的理解。如果你实际上并不清楚问题是什么,那么编写测试就很困难了。

因此,对于初学者来说,编写测试会使思维方向正确,这是合同行为,而不是实现行为。

答案 1 :(得分:4)

我希望TDD在我第一次学习编程的时候就已经存在了,并且我已经把它捡起来,然后以“旧方式”变得如此根深蒂固,以至于我很难学习TDD ......

答案 2 :(得分:4)

体验所有TDD规则

我还认为理想的TDD在学习的早期阶段会非常有用。事后我知道它会帮助我以完全不同的方式解决问题。

我感到困惑的是,当一个人正在学习时,有很多新概念被吸收,混乱可以在很早的时候开始。因此,虽然我认为TDD会非常有用,但我不认为它可以成为一个人自己成功学习的东西。

就像生活中的其他任何事情一样,当有人在身体上教导我们时,我们倾向于学得最好。向我们展示他们如何以TDD方式处理问题可以比在书本或网络上阅读它更多。我的意思是,这不会受到伤害,但它不能代替能够真正向你展示绳索的导师。

体验TDD就是一切 所以如果你能让某人教你如何在早期阶段进行TDD,我认为学习整体会加速超出任何人的想法期望的。

答案 3 :(得分: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

答案 4 :(得分:1)

接下来肯定会有很多东西,但是我说我希望我开始编写单元测试。如果我在我的工作场所有一位能指导我的TDD进展的导师,那实际上会有什么好处。我已经自学TDD了大约一年了,而且还有很多东西可以覆盖,你做的越多,它就会越多,但它现在真的开始为我付出代价。

答案 5 :(得分:1)

我认为这comment说明初学者直接学习是一件非常好的事情。

答案 6 :(得分:1)

我的编程座右铭是:

  1. 让它运行 - 程序解决问题
  2. 做得对 - 程序设计干净,并且有少量重复
  3. 快速优化(如果需要)
  4. 测试驱动开发处理前两个。

    我认为应该教一个初学者TDD,以便他知道如何运行程序。恕我直言,只有这样才能教好设计技巧。

答案 7 :(得分:1)

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

答案 8 :(得分:0)

是的!当然。

答案 9 :(得分:0)

我认为对于刚学习编程的人来说并不好。那个人怎么会知道要断言什么? :P TDD用于设计,不用于测试。一旦一个人知道如何编程,开始研究TDD方法将是一件好事。

答案 10 :(得分:0)

首先,您需要了解如何编码。阅读,学习和练习,直到你掌握好它。一旦你有了它,看看测试驱动设计 - 它非常强大。

答案 11 :(得分:0)

TDD的一个重要好处是定义完成度。在简单的算法编程中,如果你想出一些容易断言正确性的场景,它很容易在单元测试中枚举它们并保持编码直到它们全部工作。

有时单元测试对于初学者来说可能很难,如果存在许多依赖项并且您开始遇到需要模拟对象的场景。

但是,如果您可以做一个关于正确性的简单陈述,并且很容易输入,那么一定要在代码中写下来。

您可能还会注意到,如果不容易描述简单的正确陈述,您可能无法完全理解您的问题。

祝你好运......

答案 12 :(得分:0)

这实际上取决于你对“首发”的定义。如果说“首发”你指的是绝对没有编程背景的人,那么不,我不认为TDD是一个非常好的开始方式。程序员需要学习基础知识(避免无限循环,内存分配等),然后再担心重构和测试驱动开发。

答案 13 :(得分:0)

代码是代码,无论是你想要的东西,还是测试。

一开始学习TDD有很多价值。这应该是一种习惯的技能之一。我们中有很多人都理解并喜欢tdd的价值,但多年的编程已经灌输了一些以后很难打破的习惯。

就TDD用于合同设计/代码实施/测试而言,所有这些都是如此。 TDD会为您带来完美的代码吗?不,经验和研究工艺将帮助您成熟您的编码方法。但TDD对于每个开发人员来说都是一个非常重要的工具。

使用TDD有望帮助您实现可测试的设计。一个可测试的设计在理论上被很好地封装起来,并且应该遵循开放的封闭主体。

在我看来,只要人们将TDD视为一种利基工具,或者在编写代码时以某种方式可选,那些人显然无法获得TDD的价值。