# Separate Query from Command

> A technique for splitting an operation that both returns data and changes state into a query and a command.

Record: `lexicon:separate-query-from-command`
Kind: technique
Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)
Canonical: https://banes-lab.com/ontology/lexicon#lexicon-separate-query-from-command

Listed in [Lexicon terms](https://banes-lab.com/api/records/lexicon.md), after [Introduce Parameter Object](https://banes-lab.com/records/lexicon/introduce-parameter-object.md) and before [Collapse Layers](https://banes-lab.com/records/lexicon/collapse-layers.md).

## Category

- [Core Modular Design](https://banes-lab.com/records/lexicon-category/core-modular-design.md)

## Refactors

- [Hidden Side Effect](https://banes-lab.com/records/architecture/hidden-side-effect.md)
- [Controlled Side Effects](https://banes-lab.com/records/architecture/controlled-side-effects.md)

## Linked from

- [Anti-patterns](https://banes-lab.com/ontology/principles/architecture-category-anti-patterns.md)
- [Transactions / State / Concurrency](https://banes-lab.com/ontology/principles/architecture-category-transactions-state-concurrency.md)
