アプリケーションの残りの部分を永続化テクノロジから抽象化するデータ アクセス レイヤーがあります。現在、実装は SQL サーバーですが、変更される可能性があります。とにかく、このメイン データ アクセス クラスは、テーブルが大きくなるにつれてどんどん大きくなっていることがわかります (現在、約 40 テーブル)。このデータ アクセス レイヤーのインターフェイスは、データを取得したい任意の質問です。
public interface IOrderRepository
{
Customer[] GetCustomerForOrder(int orderID);
Order[] GetCustomerOrders(int customerID);
Product[] GetProductList(int orderID);
Order[] GetallCustomersOrders(int customerID);
etc . . .
}
この背後にある実装は、適切なクエリを実行し、型付きコレクションで結果を返す基本的な SQL ストアド プロシージャです。
これはどんどん増えていきます。単一の責任の実際の中断がないため、かなり保守が容易ですが、クラスのコードは 2000 行を超えています。
したがって、問題は、特定のクラスサイズ (および実際の概念的な結合がない) により、これが分解されるかどうか、また分解される場合はどの次元または抽象化のレベルかということです。