在我项目的核心库中,我们有一个非常大的类,它趋向于成为上帝对象。原因之一是,在一段时间内,应该在不同模块中的任务被放到了这个类中。对于前 -
class HugeClass{
public void DoModuleXJob(){}
public void DoModuleYJob(){}
}
重构和将不需要的模块特定行为移出此类的问题之一是模块 X 和模块 Y 更改其代码将是大量工作。作为一种解决方法,我正在考虑将这些方法转换为扩展方法,然后将它们移动到它们相关的模块中。对于前 -
// in module X
static class HugeClassExtensions{
public static void DoModuleXJob(this HugeClass instance){}
}
// in module Y
static class HugeClassExtensions{
public static void DoModuleYJob(this HugeClass instance){}
}
我发现这不会产生任何编译问题,只要模块 Y 不使用 DoModuleXJob,反之亦然,我确信这一点。
这是一个好的解决方案吗?在这种情况下有没有更好的方法?