我目前正在重构大型代码库的一部分,而没有任何单元测试。我试图以残酷的方式重构代码,即试图猜测代码在做什么,什么更改不会改变它的含义,但是没有成功:它随机破坏了整个代码库的功能。
请注意,重构包括将旧版C#代码移动到更具功能性的样式(旧版代码未使用.NET Framework 3和更高版本的任何功能,包括LINQ),在代码可能会从中受益的地方添加了泛型,等等。
考虑到要花多少钱,我不能使用形式化方法。
另一方面,我认为至少要严格遵循“任何重构的遗留代码都应带有单元测试”的规则,无论它要花多少钱。问题在于,当我重构500 LOC私有方法的一小部分时,添加单元测试似乎是一项艰巨的任务。
什么可以帮助我了解哪些单元测试与给定的代码相关?我猜测对代码进行静态分析会有所帮助,但是我可以使用哪些工具和技术:
确切知道我应该创建什么单元测试,
和/或知道我所做的更改是否以与现在不同的方式影响了原始代码?
formal methods in software development
无论如何,您都不会使用它,因为它被用于使用谓词逻辑来证明程序的正确性,并且不具有重构大型代码库的适用性。通常用于证明代码的形式化方法可以在医疗应用程序等领域正常工作。没错,这样做的代价很高,这就是为什么它不经常使用的原因。