Skip to content

Latest commit

 

History

History
30 lines (22 loc) · 1.4 KB

10.commands.md

File metadata and controls

30 lines (22 loc) · 1.4 KB

"Avoid Primitives" - Commands

Nous avons encore du travail quant aux entrants de notre système.
Celui-ci ne prend en paramètre que des types primitifs avec des signatures de méthodes :

  • difficiles à faire évoluer
    • listes de Tuples...
  • pouvant être cryptiques et donc avec un fort impact cognitif
public Guid Handle((string nom, int nbGalinettes) terrainDeChasse, List<(string nom, int nbBalles)> chasseurs)
public void Handle(Guid id, string chasseur)

Step 10 - "Avoid Primitives" - Commands

Il existe un moyen d'éviter ce phénomène : les "objets".

En l'occurence nous allons encapsuler ce qui est handlé par nos Use Cases dans des objets de type Command :

  • Prendre du temps pour comprendre ce qu'est le principe Avoid Primitive Types
  • Commencer par refactorer le code du Use Case DemarrerPartieDeChasse

Si nous avions une couche d'exposition au-dessus, nous devrions mapper les DTOs en entrée vers nos commandes afin de préserver l'encapsulation et pouvoir faire évoluer notre Domain sans impacter les couches supérieures.

Reflect

  • Où avez-vous placé les classes de type Command dans votre solution ?
  • Quel impact ce refactoring a eu ?

Commands Everywhere

Solution

Guide étape par étape disponible ici.