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

VO-05 · Les méthodes d’un value object n’ont pas d’effet de bord et parlent le langage du métier ​

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

Signal ​

  • Une méthode de value object qui modifie son instance, ses paramètres ou quoi que ce soit d’autre.
  • Une méthode qui reçoit une entity en paramètre (feeRate.applyTo(transfer)).
  • Des méthodes nommées getX() là où l’ubiquitous language dit X.

Pourquoi ​

Toutes les méthodes d’un value object immuable sont des fonctions sans effet de bord. C’est ce qui le rend sûr : on peut l’appeler partout, sans craindre de changer quoi que ce soit.

Une méthode qui reçoit une entity dépend de la forme de cette entity. Elle cache ce qu’elle en utilise, et ne peut pas prouver qu’elle la laisse intacte. Passer plutôt des valeurs (feeRate.applyTo(transfer.sourceAmount())).

Éviter aussi le préfixe get. valuePercentage() parle le langage du métier ; getValuePercentage() est du jargon technique.

Exceptions ​

On ne peut pas toujours limiter les paramètres à des valeurs. C’est un objectif, pas une obligation.

Correction ​

  • Des valeurs en paramètre.
  • Une nouvelle instance en retour quand la valeur change.
  • Des noms tirés de l’ubiquitous language.