CQS (Command Query Separation)
Architecture 🟡 MidDefinition
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.