刚刚阅读了《重构:改进现有代码的设计》的前四章,我开始了我的第一次重构,但几乎立刻就遇到了障碍。它源于这样的要求,即在开始重构之前,您应该围绕遗留代码进行单元测试。这使您可以确保您的重构没有改变原始代码所做的事情(只是它是如何做的)。
所以我的第一个问题是:如何在遗留代码中对方法进行单元测试?如何围绕不只执行一项任务的 500 行(如果我幸运的话)方法进行单元测试?在我看来,我必须重构我的遗留代码才能使其可单元测试。
有没有人有使用单元测试重构的经验?如果是这样,你有什么实际的例子可以和我分享吗?
我的第二个问题有点难以解释。这是一个示例:我想重构一个从数据库记录中填充对象的遗留方法。难道我不需要编写一个单元测试来比较使用旧方法检索到的对象和使用重构方法检索到的对象吗?否则,我怎么知道我的重构方法会产生与旧方法相同的结果?如果这是真的,那么我要在源代码中保留旧的弃用方法多长时间?在我测试了几条不同的记录之后,我会直接敲它吗?或者,如果我在重构的代码中遇到错误,我是否需要保留一段时间?
最后,由于有几个人问过......遗留代码最初是用 VB6 编写的,然后移植到 VB.NET 中,架构更改最少。