Skip to content

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.