Aller au contenu
Filtrer les règles par style d’implémentation
Style
Tactique
Sévérité
majeureMajeure pour un montant sans sa devise. Mineure sinon.
S’applique à
  • Modèle (domain)

VO-02 · Des attributs qui vont ensemble forment un tout ​

Style
Tactique
Sévérité
majeureMajeure pour un montant sans sa devise. Mineure sinon.
S’applique à
  • Modèle (domain)

Signal ​

Des attributs qui n’ont de sens qu’ensemble, rangés dans des champs séparés d’une entity :

  • le cas classique : un montant et sa devise (amount: number et currency: string) ;
  • une période en deux dates ;
  • une adresse en champs dispersés ;
  • un taux de change rangé à part de sa paire de devises.

Pourquoi ​

Seul, chaque attribut décrit autre chose, ou rien du tout. Le modèle et ses appelants doivent alors savoir quand et comment les utiliser ensemble.

Quand des attributs vont ensemble mais sont peu liés au reste de l’entity, les regrouper dans un ou plusieurs value objects nommés dans l’ubiquitous language.

Exceptions ​

Aucune.

Correction ​

Un value object par tout conceptuel (Money, Period, PostalAddress). Il devient une propriété de l’entity.

Exemple ​

ts
// Avoid: amount and currency live apart
class Transfer {
	amount: number;
	currency: string;
}
ts
// Preferred: one conceptual whole, one property
class Transfer {
	readonly #amount: Money;
}