钻石卡塔在阅读了的,他提到了Alistair CockburnSeb Rose的其他文章,我决定尝试一下。我的TDD方法与Ron Jeffries使用的方法不同,最终的解决方案也不同。就我而言,我决定不做任何设计决策,除了Diamond类上的公共方法,负责创建包含所有菱形行的数组。我编写了一系列非常小的测试,并且只编写了足够的代码以使它们通过。测试后测试,我使用重构阶段来清理代码。如果您遵循测试(它们按照我创建它们的顺序),您将看到我创建了我知道会强制代码重复的测试。我是故意这样做的。我编写了非常相似的测试,迫使我编写与已经存在的代码非常相似的新代码。这有助于我在没有猜测的情况下识别重复。一旦确定重复,我使用重构阶段使代码更通用,删除重复。有趣的是,Ron Jeffries和我都没有预先设想的设计,我们都能够在没有预先设计的情况下找到解决方案。