Metaprogramming
Kind: technique
Layer: Declarative Core
Record: architecture:metaprogramming
Severity: contextual
Scope: compile-time, runtime, framework
Canonical: Ontology
A technique for writing programs that generate or transform other programs, at compile time or at runtime.
Listed in Architecture principles, after Code as Data and before Reflection.
Requires
Reinforces
Enables
In tension with
Tensions
- Metaprogramming / Debuggability
- Metaprogramming / Static Analysis
- Metaprogramming / Explicit Handwritten Code
Violated by
Refactored by
Severity
Category
Reinforced by
Linked from
- Correctness / Determinism / Verification
- Core Modular Design
- Metaprogramming / Language-Oriented Architecture
- Core Vocabulary
- Correctness / Determinism / Verification
- Metadata / Self-Description / Declarative Systems
- Metaprogramming / Language-Oriented Architecture
- Quality Attributes
- Severity levels
- The resolutions