DDD lehrt uns, unsere Klassen wie ihre realen Prototypen zu bauen.Domen Driven Architektur und Benutzer Tippfehler/Fehler
So anstelle von Setzern
job = new Job
job.person = person
job.since = time.Now()
job.title = title
definieren wir gut genannten Methoden in unserer Aggregations Wurzel
job = person.promote(title, /** since=time.Now() **/)
Jetzt kommt der schwierige Teil
Angenommen wir eine Benutzeroberfläche für ein HR, wo er/sie gibt ein neues title
über das HTML-Formular ein und macht einen Tippfehler wie "Programmierer" (Natürlich würde es in der realen Anwendung eine Auswahlliste geben, aber hier haben wir eine Texteingabe), oder wählt ein falsches Datum (wie Standard heute)
Jetzt haben wir ein Problem. Es gibt keine Tippfehler in der realen Welt. Unser John Doe ist definitiv ein "Programmierer" und nie ein "Programmer"
Wie beheben wir diesen Tippfehler in unserem Domain-Modell?
Unsere Person
hat nur promote
, demote
, fire
usw. Methoden, die die HR-Domänenmodell widerspiegeln.
Wir konnten ein wenig betrug und die Job
Aufzeichnung direkt ändern, aber jetzt haben wir eine Job.setTitle
Methode, die nicht unser Domänenmodell widerspiegelt und ist auch Setter böse, wissen Sie.
, die ein wenig „akademisch“ aussehen, aber das ist wirklich nervt mich, wenn ich versuche
Dies ist eine sehr gute Frage und erstreckt sich auch auf andere Tippfehler/Fehler, wie unbeabsichtigt ein falsches Datum etc –