Aller au contenu
Filtrer les règles par style d’implémentation
Style
Tactique
Sévérité
mineure
S’applique à
  • Modèle (domain)
  • Adapters driven

AGG-16 · Le versioning reste hors du code métier ​

Style
Tactique
Sévérité
mineure
S’applique à
  • Modèle (domain)
  • Adapters driven

Signal ​

  • Une méthode métier incrémente elle-même la version (this.version++).
  • Une association d’une partie vers l’aggregate root, ajoutée seulement pour transmettre ses changements au versioning.

Pourquoi ​

C’est un souci de persistance qui fuit dans le modèle. Incrémenter à chaque appel fait aussi avancer la version de l’aggregate root quand la méthode n’a rien changé. Éviter les associations bidirectionnelles en général, et plus encore pour cela.

Exceptions ​

Modifier une propriété métier légitime de l’aggregate root (un statut), qui fait naturellement avancer la version.

Correction ​

Le repository gère la version (AGG-15). Si un changement d’une partie fait difficilement avancer la version de l’aggregate root, c’est un signe : réduire l’aggregate à un aggregate root et des value objects.