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

VO-07 · Ce qui vient d’un autre bounded context entre comme un value object ​

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

Signal ​

  • Le bounded context downstream reconstruit un objet upstream en entity ou en aggregate local, avec du code pour le garder synchronisé, alors qu’une copie figée de quelques attributs suffirait.
  • Un concept local qui recopie de nombreux attributs du bounded context upstream.

Pourquoi ​

Modéliser en value object ce qui vient d’un autre bounded context, c’est laisser moins de propriétés à la charge du bounded context downstream.

Par exemple, un Approver est un value object créé une fois, avec quelques attributs (l’identité du mandataire, le nom affiché). Il ne recopie aucun attribut du mandat qui lui donne ce rôle : le nom de sa classe dit déjà le rôle. Il n’est pas synchronisé avec son bounded context d’origine, et c’est voulu. Le bounded context downstream s’en trouve bien plus léger.

Exceptions ​

Un objet qui doit suivre, en eventual consistency, une partie de l’état d’un aggregate distant. Une entity ou un aggregate local se justifie alors, mais il vaut mieux l’éviter quand c’est possible.

Correction ​

Un value object local, construit à la frontière. Pas de synchronisation, sauf si le métier en a explicitement besoin.

Voir aussi ​

ACL-02 ne traduit que le minimum. CTX-05 traduit à la frontière en un concept local.