今天早上在一次工作面试中,他们问我是否有一些没有测试的遗留代码,我需要修改一些东西,我将如何做才能完全确保我没有破坏任何东西。
我的回答是,首先我会为我需要修改的代码部分创建一个测试,然后一旦测试通过,我会修改代码以确保测试仍然通过。所以基本上是从测试驱动的开发方法来做的。
我没有看到面试我的人对我的回答真的很好,所以我想听听你对这些主题的看法,有更好的方法吗?
我的回答有效吗?
非常感谢你
最佳答案
您的答案是正确的,但可能过于简化。
在现实世界中,这通常并不容易。特别是对于大量代码耦合过多的遗留系统,存在糟糕的抽象,低效的语言结构等。如果没有其他测试并且发生这种情况,则尤其具有挑战性。
此外,有时如果依赖项是硬编码的,那么模拟它们就不是那么容易了。那么它是否允许模拟最终类、静态方法等取决于模拟框架的功能。
也许值得一提的是“有效地使用遗留代码”一书中的一些模式。