# Do Not Repeat Yourself

Record: `arch:duplicate-code`
Kind: principle
Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)
Severity: mandatory
Scope: function, module, domain
Aliases: DRY
Canonical: https://banes-lab.com/ontology#arch-duplicate-code

## Repair

- Refactored by: Extract Function, Extract Module, Parameterize, Centralize Rule
- Detected by: clone detection, duplicated branches, repeated literals
- Violated by: duplicated logic, duplicated constants, duplicated schemas
- Measured by: duplication percentage, clone count
- Enforced by: clone analyzers, lint rules, review gates

## requires

- [Abstraction](https://banes-lab.com/records/arch/abstraction.md)
- [Canonical Source](https://banes-lab.com/records/lex/canonical-source.md)

## reinforces

- [Single Source of Truth](https://banes-lab.com/records/arch/single-source-of-truth.md)
- [Reusability](https://banes-lab.com/records/arch/reusability.md)

## enables

- [Consistency](https://banes-lab.com/records/arch/consistency.md)
- [Maintainability](https://banes-lab.com/records/lex/maintainability.md)

## conflicts-with

- [Copy-Paste Programming](https://banes-lab.com/records/lex/copy-paste-programming.md)

## tensions-with

- [Locality of Behavior](https://banes-lab.com/records/lex/locality-of-behavior.md)
- [Simplicity](https://banes-lab.com/records/lex/simplicity.md)

## tensions

- [Do Not Repeat Yourself (DRY) Locality of Behavior](https://banes-lab.com/records/tension/do-not-repeat-yourself-dry-locality-of-behavior.md)
- [Do Not Repeat Yourself (DRY) Simplicity](https://banes-lab.com/records/tension/do-not-repeat-yourself-dry-simplicity.md)

## referenced-by

- [Reusability](https://banes-lab.com/records/arch/reusability.md)
- [Metaprogramming](https://banes-lab.com/records/arch/metaprogramming.md)
- [Single Source of Truth](https://banes-lab.com/records/arch/single-source-of-truth.md)
- [Normalization](https://banes-lab.com/records/arch/normalization.md)
