扩展这个问题我是如何学会从 problem description to code 传来的。两个人提到了TDD。
对于初学者来说,进入TDD(并避免将来会出现不良习惯)会不会有好处?或者在理解编程语言是什么时,它是否会过于复杂?
答案 0 :(得分:8)
因此,对于初学者来说,编写测试会使思维方向正确,这是合同行为,而不是实现行为。
答案 1 :(得分:4)
我希望TDD在我第一次学习编程的时候就已经存在了,并且我已经把它捡起来,然后以“旧方式”变得如此根深蒂固,以至于我很难学习TDD ......
答案 2 :(得分:4)
我还认为理想的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)
答案 5 :(得分:1)
我认为这comment说明初学者直接学习是一件非常好的事情。
答案 6 :(得分:1)
我的编程座右铭是:
测试驱动开发处理前两个。
我认为应该教一个初学者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的价值。