我最近一直在阅读有关 TDD 的文章,之所以提倡它,是因为据说它会导致代码更易测试且耦合更少(以及许多其他原因)。
除了罗马数字转换和数字到英文转换器之外,我还没有找到很多实际示例。
观察这两个例子,我观察了典型的 TDD 典型的红绿重构循环,以及TDD 规则的应用。然而,这似乎是在浪费时间,因为通常我会观察一个模式并在代码中实现它,然后再为它编写测试。或者可能为代码编写一个存根,编写单元测试,然后编写实现——这可能是 TDD——但不是这种持续的逐案重构。
TDD 似乎鼓励开发人员直接进入代码并以归纳方式构建他们的实现,而不是设计适当的架构。到目前为止,我的观点是,TDD 的好处可以通过适当的架构设计来实现,尽管不可否认,并不是每个人都能很好地做到这一点。
所以在这里我有两个问题:
- 我是否正确理解使用 TDD 几乎不允许您先进行设计(请参阅 TDD 的规则)?
- 在开始编码之前,有什么 TDD 给您的东西是您无法通过正确设计获得的吗?