7
如何将代码重构为一些通用代码?
背景 我正在进行中的C#项目。我不是C#程序员,主要不是C ++程序员。因此,我基本上被分配了简单的重构任务。 该代码是一团糟。这是一个巨大的项目。由于我们的客户要求频繁发布具有新功能和错误修复的程序,因此所有其他开发人员在编码时都被迫采取暴力手段。该代码极难维护,所有其他开发人员都同意。 我不是在这里辩论他们是否做对了。在重构时,我想知道我是否以正确的方式进行操作,因为重构后的代码似乎很复杂!这是我作为简单示例的任务。 问题 有六类:A,B,C,D,E和F。所有的类都有一个功能ExecJob()。所有六个实现都非常相似。基本上,起初A::ExecJob()是写的。然后需要一个稍有不同的版本,该版本B::ExecJob()通过对的复制粘贴修改进行实现A::ExecJob()。当需要另一个略有不同的版本时,C::ExecJob()编写此类代码。所有六个实现都有一些通用代码,然后有一些不同的代码行,再有一些通用代码,依此类推。这是实现的一个简单示例: A::ExecJob() { S1; S2; S3; S4; S5; } B::ExecJob() { S1; S3; S4; S5; } C::ExecJob() { S1; S3; S4; } SN一组完全相同的语句在哪里。 为了使它们通用,我创建了另一个类并将通用代码移到函数中。使用参数控制应执行的语句组: Base::CommonTask(param) { S1; if (param.s2) S2; S3; S4; if (param.s5) S5; } A::ExecJob() // A inherits Base { param.s2 = …