Questa è una domanda che ho posto qualche tempo fa su SO, ma potrebbe essere discussa meglio qui ...
Dove lavoro, siamo andati avanti e indietro su questo argomento diverse volte e stiamo cercando un controllo di integrità. Ecco la domanda: gli oggetti business dovrebbero essere contenitori di dati (più simili ai DTO ) o dovrebbero contenere anche una logica in grado di eseguire alcune funzionalità su quell'oggetto.
Esempio: prendi un oggetto cliente, probabilmente contiene alcune proprietà comuni (Nome, Id, ecc.), Quell'oggetto cliente dovrebbe includere anche funzioni (Salva, Calc, ecc.)?
Una linea di ragionamento dice che separa l'oggetto dalla funzionalità (unico responsabile della responsabilità) e inserisce la funzionalità in un livello o oggetto di business logic.
L'altra linea di ragionamento dice, no, se ho un oggetto cliente voglio solo chiamare Cliente. Salvare e averlo fatto. Perché devo sapere di un'altra classe per salvare un cliente se sto consumando l'oggetto?
I nostri ultimi due progetti hanno separato gli oggetti dalla funzionalità, ma il dibattito è stato nuovamente sollevato su un nuovo progetto.
Il che ha più senso e perché ??