# Encode State Machine

> A technique for declaring the states and legal transitions of a lifecycle, so an operation called in the wrong state is refused.

Record: `lexicon:encode-state-machine`
Kind: technique
Layer: [Design Patterns Core](https://banes-lab.com/records/layer/design-patterns-core.md)
Canonical: https://banes-lab.com/ontology/lexicon#lexicon-encode-state-machine

Listed in [Lexicon terms](https://banes-lab.com/api/records/lexicon.md), after [State Explosion](https://banes-lab.com/records/lexicon/state-explosion.md) and before [Make Order Explicit](https://banes-lab.com/records/lexicon/make-order-explicit.md).

## Category

- [Behavioral Patterns](https://banes-lab.com/records/lexicon-category/behavioral-patterns.md)

## Refactors

- [Temporal Coupling](https://banes-lab.com/records/architecture/temporal-coupling.md)

## Linked from

- [Anti-patterns](https://banes-lab.com/ontology/principles/architecture-category-anti-patterns.md)
