Ich bin etwas verwirrt über einen Absatz in dem Buch "Code Complete".
Im Abschnitt "Zu vermeidende Klassen" heißt es:
"Vermeiden Sie Klassen, die nach Verben benannt sind. Eine Klasse, die nur Verhalten, aber keine Daten hat, ist im Allgemeinen keine richtige Klasse. Erwägen Sie, eine Klasse wie DatabaseInitialization() oder StringBuilder() in eine Routine für eine andere Klasse zu verwandeln.
Mein Code besteht hauptsächlich aus Verbklassen ohne Daten. Es gibt Rechnungsleser, Preiskalkulatoren, Nachrichtenersteller usw. Ich mache das, um die Klassen auf jeweils eine Aufgabe zu konzentrieren. Dann füge ich Abhängigkeiten zu anderen Klassen für andere Funktionen hinzu.
Wenn ich den Absatz richtig verstehe, sollte ich folgenden Code verwenden
class Webservice : IInvoiceReader, IArticleReader {
public IList<Invoice> GetInvoices();
public IList<Article> GetArticles();
}
statt
class InvoiceReader : IInvoiceReader {
public InvoiceReader(IDataProvider dataProvider);
public IList<Invoice> GetInvoices();
}
class ArticleReader : IArticleReader {
public ArticleReader(IDataProvider dataProvider);
public IList<Article> GetArticles();
}
Modifier Vielen Dank für die vielen Antworten.
Meine Schlussfolgerung ist, dass mein derzeitiger Code eher SRP als OO ist, aber auch unter dem "anämischen Domänenmodell" leidet.
Ich bin sicher, dass mir diese Erkenntnisse in Zukunft helfen werden.