CQS (Command Query Separation)

Architecture 🟡 Mid

Definition

Une methode est soit une commande (modifie l'etat, ne retourne rien) soit une query (retourne des donnees, ne modifie rien). Jamais les deux.

Analogie

Au guichet : soit tu deposes un cheque (commande), soit tu consultes ton solde (query). Pas les deux en meme temps.

Exemple de code

class Stack {
  push(item) { this.items.push(item); } // Command: void
  peek() { return this.items.at(-1); }   // Query: value
  // pop() viole CQS: modifie ET retourne
}

Cas d'usage

Base de CQRS, rend le code previsible et plus facile a raisonner.

Anti-pattern

Methodes qui modifient l'etat et retournent des resultats — effets de bord caches.
#architecture#interview#principle