# Intent-Revealing Interface

> A design rule that an operation's name and parameters state what it does for the caller.

Record: `architecture:intent-revealing-interface`
Kind: principle
Layer: [Contracts Core](https://banes-lab.com/records/layer/contracts-core.md)
Severity: recommended
Scope: API, method, class, module
Aliases: Intent-Revealing Interfaces, Intent-Revealing API
Canonical: https://banes-lab.com/ontology#architecture-intent-revealing-interface

Listed in [Architecture principles](https://banes-lab.com/api/records/architecture.md), after [Ubiquitous Language](https://banes-lab.com/records/architecture/ubiquitous-language.md) and before [Principle of Least Surprise](https://banes-lab.com/records/architecture/principle-of-least-surprise.md).

## Repair

- Refactored by: Rename Method, Replace Boolean with Enum, Add Value Object
- Detected by: generic names, unclear parameters
- Violated by: vague method names, boolean traps
- Measured by: API clarity review findings
- Enforced by: naming lint, API review

## Requires

- [Clear Semantics](https://banes-lab.com/records/lexicon/clear-semantics.md)
- [Naming Consistency](https://banes-lab.com/records/lexicon/naming-consistency.md)

## Reinforces

- [Principle of Least Surprise](https://banes-lab.com/records/architecture/principle-of-least-surprise.md)

## Enables

- [Readability](https://banes-lab.com/records/lexicon/readability.md)
- [Correct Usage](https://banes-lab.com/records/lexicon/correct-usage.md)

## Conflicts with

- [Ambiguous API](https://banes-lab.com/records/lexicon/ambiguous-api.md)
- [Boolean Trap](https://banes-lab.com/records/architecture/boolean-trap.md)

## In tension with

- [Concise Naming](https://banes-lab.com/records/lexicon/concise-naming.md)

## Tensions

- [Intent-Revealing Interface / Concise Naming](https://banes-lab.com/records/tension/concise-naming-intent-revealing-interface.md)

## Severity

- [recommended](https://banes-lab.com/records/vocabulary/severity-recommended.md)

## Category

- [Schema / Canonical Data / Semantics](https://banes-lab.com/records/architecture-category/schema-canonical-data-semantics.md)

## Enforced by

- [rules/eslint/closure-register-verb-reserved.eslint.rule.ts](https://banes-lab.com/source/governance/rules/eslint/closure-register-verb-reserved.eslint.rule.ts.md)
- [rules/eslint/closure-registry-consumer-naming.eslint.rule.ts](https://banes-lab.com/source/governance/rules/eslint/closure-registry-consumer-naming.eslint.rule.ts.md)

## Reinforced by

- [Builder Pattern](https://banes-lab.com/records/architecture/builder-pattern.md)

## Enabled by

- [Ubiquitous Language](https://banes-lab.com/records/architecture/ubiquitous-language.md)

## Linked from

- [Anti-patterns](https://banes-lab.com/ontology/principles/architecture-category-anti-patterns.md)
- [Creational Patterns](https://banes-lab.com/ontology/principles/architecture-category-creational-patterns.md)
- [Schema / Canonical Data / Semantics](https://banes-lab.com/ontology/principles/architecture-category-schema-canonical-data-semantics.md)
- [Quality Attributes](https://banes-lab.com/ontology/lexicon/lexicon-category-quality-attributes.md)
- [Schema / Canonical Data / Semantics](https://banes-lab.com/ontology/lexicon/lexicon-category-schema-canonical-data-semantics.md)
- [Severity levels](https://banes-lab.com/ontology/schema/the-vocabulary-severity.md)
- [The resolutions](https://banes-lab.com/ontology/schema/the-resolutions.md)
