Я немного смущен абзацем в полной книге кода.
В разделе "Классы, которые следует избегать" он читает:
"Избегайте классов, названных в честь глаголов. Класс, который имеет только поведение, но нет данных, как правило, не является классом. Подумайте о том, чтобы превратить класс, например DatabaseInitialization() или StringBuilder() в подпрограмму какого-либо другого класса"
Мой код в основном состоит из классов глаголов без данных. Есть invoicereaders, pricecalculators, messagebuilders и т.д. Я делаю это, чтобы сосредоточить классы на одной задаче каждый. Затем я добавляю зависимости к другим классам для других функций.
Если я правильно понимаю абзац, я должен использовать код типа
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();
}
Изменить Спасибо за все ответы.
Я пришел к выводу, что мой текущий код больше SRP, чем OO, но он также страдает от "модели анемичного домена".
Я уверен, что эти идеи помогут мне в будущем.