私のプロジェクトのコアライブラリには、非常に大きなクラスがあり、神オブジェクトになる傾向があります。その理由の1つは、ある期間にわたって、異なるモジュールにあるはずのタスクがこのクラスに入れられたことです。例-
class HugeClass{
public void DoModuleXJob(){}
public void DoModuleYJob(){}
}
不要なモジュール固有の動作をこのクラスからリファクタリングおよび移動する際の問題の1つは、モジュール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を使用していない限り、これによってコンパイルの問題が発生することはありません。その逆も同様です。
これは良い解決策ですか?そのような場合にもっと良い方法はありますか?