Information Hiding¶
Design decisions likely to change should be hidden behind stable interfaces, so changes propagate only within the hiding module
Tension Addressed¶
Coupling vs. Flexibility
Recognizable As¶
Private implementation details behind public interfaces; configuration hidden behind abstractions; algorithm choice encapsulated within a boundary; "secrets" that modules keep from each other
Canonical Sources¶
Parnas, "On the Criteria for Decomposing Systems into Modules" (1972)
Transfers To¶
API Design (stable contracts), Data Modeling (schema encapsulation), Security (principle of least privilege), Hardware Engineering (abstraction layers)
Information hiding is distinct from data hiding. It encompasses hiding any design decision - algorithms, data representations, hardware dependencies, or policy choices. The criterion for what to hide is change likelihood, not data versus function.
Related Concepts¶
- Coupling - Software Architecture
- Information Hiding - Software Design (cross-domain)