Ho letto su Domain Driven Design per quasi due anni e ho introdotto con cautela alcuni concetti nel mio lavoro quotidiano o almeno facendo piani su come fare regolarmente le cose in un Domain Driven Design.
Una conclusione a cui ho iniziato a parlare soprattutto in risposta alla lettura di ulteriori informazioni su Event Sourcing e Command Query Responsibility Segregation (CQRS) che forse gli oggetti di dominio sono destinati ad essere utilizzati solo per scopi di scrittura. Per essere più chiari, sembra che ciò che le persone suggeriscono sottilmente in gran parte della documentazione che ho letto sul fatto che gli oggetti di dominio sono responsabili di operazioni / calcoli, convalida, e quindi ci sono principalmente per fornire una strada alla persistenza attraverso l'infrastruttura fornita all'interno di un'implementazione del repository. Anche se mi piace il fatto che questo possa semplificare notevolmente il modello di dominio in quanto elimina la responsabilità di esporre lo stato.
Se è davvero corretto che gli oggetti di dominio siano principalmente usati come oggetti di sola scrittura, allora sollevo alcune domande per me che spero che qualcuno possa rispondere.
- Come si eseguono i test unitari su un oggetto che ha setter, o metodi che modificano lo stato di un oggetto ma che non forniscono alcuna interfaccia pubblica esterna per leggere lo stato da getter di proprietà in C #? Va bene esporre lo stato al solo scopo di rendere tale oggetto verificabile?
- Come si può mostrare a un utente i risultati di calcoli o operazioni eseguite nel dominio senza doverli persistere e quindi estrarre i risultati dall'archivio permanente al di fuori del contesto del dominio? Va bene esporre lo stato al solo scopo di mostrare i risultati.
La regola generale è che gli unici getters di proprietà (ottenere accessor) dovrebbero essere quelli che sono anche scrivibili nel dominio? O detto diversamente le proprietà di sola lettura dovrebbero essere l'unica cosa da evitare visto che sono lì solo per scopi di lettura e quindi non svolgono un ruolo necessario nel modello di dominio reale?
Materiale correlato: