Fowlers Buch Refactoring listet "Data Class" als Code-Geruch auf. Wenn jedoch eine Einheit eine Methode testet, werden Wertobjekte, z. Datenübertragungsobjekte, machen das Testen viel einfacher, als zu versuchen, den Zustand innerhalb einer Klasse einzurichten oder zu untersuchen.Ist "Datenklasse" wirklich ein Code-Geruch?
Es fällt mir auf, dass die Test Driven Development-Methode auf der Idee beruht, dass einfach zu schreibende Tests ein Hinweis darauf sind, dass die Schnittstelle sauber und die Methode kohärent ist. Rein idempotente Methoden sind am einfachsten zu testen und am einfachsten wiederzuverwenden. Warum ist eine Datenklasse also eine schlechte Sache? Die empfohlene Lösung besteht darin, das Verhalten in die Datenklasse zu verschieben, aber warum sollte ein Wertobjekt ein Verhalten benötigen?
Was ist, wenn mein Domänenmodell nicht ausschließlich meine Domäne ist? Damit meine ich, dass ich mit Entitäten aus einem Unternehmensdatenmodell arbeiten muss, die aus einer Datenbank abgerufen werden. Sollte eine Datenklasse, die die Entität repräsentiert, kein eigenes Verhalten haben, anstatt diese Verantwortung an Serviceobjekte zu delegieren, die ich zur Verfügung stelle? –
Die Antwort ist ein bisschen lang, also habe ich die Antwort bearbeitet. Übrigens ausgezeichnete Frage. – aquaraga