测试驱动开发。如何处理重构未经测试的遗留代码?

时间:2011-11-16 20:47:54

标签: refactoring tdd legacy-code

我开始为我的iOS开发项目采用测试驱动设计(TDD)行为和工作流程。尽管在遗留软件的背景下至少存在一个障碍。我经常需要为我不熟悉的预先存在的代码库添加功能。我通常希望在开始使用代码库时重构,因为代码库通常没有可用的测试来确保我的重构不会改变代码功能或者更糟糕的是添加错误。

我的问题是,当代码不是从头开始编写时,TDD人员如何引导整个过程,而是将它们带入工作的遗留代码?

谢谢,
道格

更新

对于一个具体的例子,我使用Martin Fowler在Objective-C中重新编码的重构代码作为TDD(和AppCode)的训练设备>>

我从测试中构建了代码。我发现我需要在Customer类中添加实例变量,以确保在增长代码时我没有搞砸语句方法中的成本计算。这是我需要深入了解的基本问题。

1 个答案:

答案 0 :(得分:4)

首先,如果您不理解您正在使用的遗留代码,则需要在执行您可能会改变行为的事情之前解决这个问题。

在您的情况下,在理解遗留代码之后,我会编写针对遗留代码运行的测试。一旦您对这些测试按预期运行感到满意,您就可以更好地测试重构代码,以确保它像旧代码一样运行。