コードの完全な本の段落について、私はやや混乱しています。
「避けるべきクラス」セクションには、次のように書かれています。
「動詞にちなんで名付けられたクラスを避ける 動作のみを持ち、データを持たないクラスは、一般的に実際にはクラスではありません。DatabaseInitialization() や StringBuilder() のようなクラスを他のクラスのルーチンに変えることを検討してください」
私のコードは、主にデータのない動詞クラスで構成されています。請求書リーダー、価格計算機、メッセージビルダーなどがあります。クラスをそれぞれ 1 つのタスクに集中させるためにこれを行います。次に、他の機能のために他のクラスに依存関係を追加します。
段落を正しく理解していれば、次のようなコードを使用する必要があります
class Webservice : IInvoiceReader, IArticleReader {
public IList<Invoice> GetInvoices();
public IList<Article> GetArticles();
}
それよりも
class InvoiceReader : IInvoiceReader {
public InvoiceReader(IDataProvider dataProvider);
public IList<Invoice> GetInvoices();
}
class ArticleReader : IArticleReader {
public ArticleReader(IDataProvider dataProvider);
public IList<Article> GetArticles();
}
編集 返信ありがとうございます。
私の結論は、私の現在のコードは OO よりも SRP ですが、「貧血ドメイン モデル」にも悩まされているということです。
これらの洞察は将来私を助けると確信しています。