UC-04 · Le use case reste mince
Signal
Un use case qui calcule des valeurs, enchaîne des décisions sur l’état du domaine, ou applique des règles métier dans ses boucles.
Le cas normal tient en trois étapes : recevoir les paramètres, charger l’aggregate par son repository, appeler l’une de ses méthodes métier.
Pourquoi
Un use case ne porte aucune logique métier : il coordonne. S’il devient beaucoup plus complexe que le cas normal, la logique fuit sans doute hors du domaine, et le modèle devient anémique.
Exceptions
Ces responsabilités sont légitimes :
- contrôler la transaction et la sécurité ;
- enregistrer dans l’outbox ce que les autres systèmes doivent apprendre, envoyé après le commit (MSG-01, PER-08) ;
- créer un aggregate par une factory ou son constructeur, puis l’enregistrer ;
- appeler un domain service.
Correction
Renvoyer chaque décision dans l’aggregate ou dans un domain service.
Voir aussi
AGG-01 et ENT-10 désignent la règle mal placée. Cette règle donne la taille attendue et la liste de ce qui est légitime : quand elles signalent les mêmes lignes, un seul finding suffit. SRV-03 montre un use case qui décide à la place du domaine, puis sa correction.