Sep 14

Je suis d’accord avec Udi Dahan (Don’t Delete - Just Don’t) et Ayende sur le fait de ne pas détruire d’entité.
Dans les Enterprise Application, les entités metier on quasiment toutes un cycle de vie. Et souvent, la dernière étape de ce cycle n’est pas la suppression mais la désactivation.
Ceci n’est cependant pas vrai pour toutes les entitiés. Je pense entre autre a celles qui n’on d’existence que dans un context donné, comme une référence catalogue dans un shopping cart. Il n’y a en effet pas de workflow (ou cycle de vie): l’utilisateur ajoute ou enlève des éléments de sont shopping cart tant que celui-ci n’a pas été validé. C’est en effet le shopping cart qui a un cycle de vie.
Cela veut donc dire que le Delete (le “D” de CRUD) doit etre implémenté et accessible a l’utilisateur, mais que pour les entités a cycle de vie, il faut remplacé la destruction par un status.