Immagina una semplice app di messaggistica scritta in Django. Gli utenti hanno la possibilità di cancellare i messaggi in qualsiasi momento, ma i messaggi devono essere conservati nel database. Ci sono due opzioni:
-
Un attributo
deleted
suMessage
. Quindi la chiamatauser.messages.all()
verrebbe sostituita conuser.messages.filter(deleted=False)
ovunque nel codice. Sembra che potrebbe creare bug nascosti e non è intuitivo. -
Crea un oggetto
DeletedMessage
separato. Ciò viola il principio di avere dati simili in un'unica posizione, ma consente chiamate di metodo più semplici (ad esempiouser.messages.all()
).
Quale metodo è migliore?