Common Reuse Principle¶
Group reusable elements so consumers do not depend on things they do not use.
Canonical interpretation¶
Package boundaries should align with actual reuse sets and release coupling.
Purpose¶
Group reusable elements so consumers do not depend on things they do not use.
Apply when¶
- Knowledge or policy is duplicated in ways that can diverge.
- A stable variation axis or public extension boundary has been demonstrated.
This does not mean¶
- Do not split packages into tiny fragments without consumer value.
- Do not assume code used together today will always be versioned together.
Trade-offs¶
- An abstraction introduces coupling between its consumers.
- Premature reuse can make independently changing concepts harder to modify.
Conflicts with canonical entries¶
common-closure-principlepackage-by-feature
Broader policy tensions¶
- None recorded.
Reinforces canonical entries¶
interface-segregation-principle
Supports broader concerns¶
- None recorded.
Core Skill ownership¶
Primary owner: modular-design
Positive example¶
Publish a focused parsing package without unrelated storage dependencies.
Counterexample¶
Require consumers of one utility to install an entire application framework.
Guidance for AI models¶
- Apply this guidance only after considering the active project profile, constraints, and architecture authority.
- State the concrete design consequence instead of citing the principle name as sufficient justification.
Editorial note¶
This page is generated from the canonical YAML entry. Edit principles/entries/common-reuse-principle.yaml and regenerate the compendium instead of editing this file directly.