concept

Command Query Separation

Command Query Separation (CQS) is a software design principle that distinguishes between operations that modify state (commands) and those that return data (queries). It states that methods should either be commands that perform an action and change state but return no value, or queries that return data but have no side effects. This separation enhances code clarity, testability, and maintainability by making side effects explicit and predictable.

Also known as: CQS, Command-Query Separation, Command Query Segregation, CQ Separation, Bertrand Meyer CQS
๐ŸงŠWhy learn Command Query Separation?

Developers should learn and apply CQS when building systems where clear separation of concerns is critical, such as in domain-driven design, event-sourced architectures, or applications requiring high testability and debuggability. It is particularly useful in scenarios like implementing the CQRS pattern, designing APIs with RESTful principles, or developing business logic where side effects must be tightly controlled to avoid unintended consequences.

Compare Command Query Separation

Learning Resources

Related Tools

Alternatives to Command Query Separation