# Command/Query Separation

> Separating operations that change state from those that return data, so each method has a single purpose.

Record: `lexicon:command-query-separation`
Kind: principle
Layer: [Execution Core](https://banes-lab.com/records/layer/execution-core.md)
Canonical: https://banes-lab.com/ontology/lexicon#lexicon-command-query-separation

Listed in [Lexicon terms](https://banes-lab.com/api/records/lexicon.md), after [Broker/Event Bus](https://banes-lab.com/records/lexicon/broker-event-bus.md) and before [Compensating Transactions](https://banes-lab.com/records/lexicon/compensating-transactions.md).

## Category

- [Event Messaging Async](https://banes-lab.com/records/lexicon-category/event-messaging-async.md)

## Required by

- [CQRS](https://banes-lab.com/records/architecture/command-query-responsibility-segregation.md)

## Linked from

- [Event / Messaging / Asynchronous Architecture](https://banes-lab.com/ontology/principles/architecture-category-event-messaging-asynchronous-architecture.md)
