CQS (Command Query Separation)

Architecture 🟡 Mid

Définition

Une méthode est soit une commande (modifie l'état, ne retourne rien) soit une query (retourne des données, ne modifie rien). Jamais les deux.

Analogie

Au guichet : soit tu deposes un chèque (commande), soit tu consultes ton solde (query). Pas les deux en même 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 prévisible et plus facile a raisonner.

Anti-pattern

Méthodes qui modifient l'état et retournent des résultats — effets de bord caches.
#architecture#interview#principle

En entretien

  1. Qu'est-ce que le principe CQS (Command Query Separation) ?

    Une méthode doit être soit une commande qui modifie l'état sans rien retourner, soit une query qui retourne des données sans rien modifier, jamais les deux à la fois. Au guichet, tu déposes un chèque (commande) ou tu consultes ton solde (query), jamais les deux en même temps.

  2. Donne un exemple de violation du CQS.

    Une méthode comme pop() sur une pile, qui modifie l'état ET retourne un résultat, viole le CQS en créant un effet de bord caché.

Fiche mise à jour le 2026-09-27

← → au clavier pour passer d'une fiche à l'autre