CQS (Command Query Separation)
Architecture 🟡 MidDé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
Termes liés
En entretien
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.
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