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

VO-01 · Un concept du domaine n’est pas un type primitif ​

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

Signal ​

Un concept du domaine rangé dans un string ou un number nu, alors que sa logique (format, normalisation, validation, calcul) finit chez ses appelants. Par exemple, un appelant corrige la casse d’un nom rangé dans un string.

Pourquoi ​

Un type primitif ne dit rien du domaine. Il ne peut pas porter de comportement propre au concept : la logique fuit dans le reste du modèle et chez les appelants. Un value object garde le concept entier en un seul endroit. Par exemple, il normalise le nom à sa création.

Exceptions ​

Les attributs simples et isolés, sans comportement ni lien avec d’autres attributs (un booléen, un nombre isolé). Envelopper un attribut de trop est une erreur sans gravité : un petit refactoring la corrige.

Correction ​

Un value object nommé dans l’ubiquitous language, qui porte le format et la validation.

Voir aussi ​

ENT-03 applique la même règle aux identités. ENT-15 en montre un exemple avec HolderName.