← ClaudeAtlas

hiding-informationlisted

Use when callers know how a module works inside, when one data format appears in several modules, or when each step of a process became a module.
yutna/functional-design-skills · ★ 0 · Code & Development · score 75
Install: claude install-skill yutna/functional-design-skills
# Hiding Information ## Overview Each module should encapsulate knowledge that its callers do not have and do not need. That knowledge is a design decision: a storage format, a protocol, an algorithm, a business rule's exact thresholds. Hiding it means a change to the decision cannot reach a caller. Information leakage is the opposite: the same knowledge appears in more than one module, or appears in an interface when it belongs in an implementation. Leakage is the single most damaging structural problem, because it turns one decision into many, silently. ## When to use - Two modules both know a date format, a status code, or a field layout - A change to one internal detail forced edits elsewhere - Deciding what to export from a new module - Modules named after steps of a process rather than kinds of knowledge - A value is threaded through five functions that never look at it Not for: judging whether a module is worth its interface, which is [designing-deep-modules](../designing-deep-modules/SKILL.md). ## Core rules 1. **Name the knowledge each module owns.** Write one line per module: "this module is the only place that knows X". If two modules claim the same X, that is leakage, and one of them must stop. 2. **Decompose by knowledge, not by time.** Modules named `parse`, `enrich`, `send` follow the order things happen. Order changes; knowledge does not. See [temporal-decomposition.md](references/temporal-decomposition.md). 3. **Export the least that st