34 lines
1.2 KiB
Markdown
34 lines
1.2 KiB
Markdown
# Deep Modules
|
|
|
|
From "A Philosophy of Software Design":
|
|
|
|
**Deep module** = small interface + lots of implementation
|
|
|
|
```
|
|
┌─────────────────────┐
|
|
│ Small Interface │ ← Few methods, simple params
|
|
├─────────────────────┤
|
|
│ │
|
|
│ │
|
|
│ Deep Implementation│ ← Complex logic hidden
|
|
│ │
|
|
│ │
|
|
└─────────────────────┘
|
|
```
|
|
|
|
**Shallow module** = large interface + little implementation (avoid)
|
|
|
|
```
|
|
┌─────────────────────────────────┐
|
|
│ Large Interface │ ← Many methods, complex params
|
|
├─────────────────────────────────┤
|
|
│ Thin Implementation │ ← Just passes through
|
|
└─────────────────────────────────┘
|
|
```
|
|
|
|
When designing interfaces, ask:
|
|
|
|
- Can I reduce the number of methods?
|
|
- Can I simplify the parameters?
|
|
- Can I hide more complexity inside?
|