Блок 3 · Урок 9 · ≈ 9 минут
Глубокий и мелкий модуль
Цель: увидеть глубину как свойство интерфейса, а не размера файла.
Глубокий: мало знать снаружи, много получать внутри.
Мелкий: интерфейс почти такой же сложный, как реализация.
Зачем это вам
AI-агент легко предлагает «вынести в отдельный модуль». Но новый файл сам по себе не уменьшает сложность. Спросите: стал ли внешний код знать меньше?
Суть
Глубокий модуль (deep module) скрывает важное решение: формат данных, правила валидации, политику ошибок, retry-логику или работу с провайдером.
Мелкий модуль (shallow module) имеет интерфейс почти такой же сложный, как его внутренняя работа.
Глубина не равна размеру. Маленькая функция может скрывать важное знание, а большой класс — только передавать вызовы дальше.
Аналогия
Глубокий модуль похож на банкомат: снаружи несколько понятных действий, внутри много правил и интеграций. Мелкий модуль похож на табличку «спросите сотрудника»: интерфейс есть, но всю сложность несёт пользователь.
Запомните одно
Модуль становится глубоким, когда внешний код знает меньше деталей и получает больше поведения.
Фраза агента → что он имеет в виду
- «Вынесу это в helper»
- Проверьте, helper скрывает решение или только даёт новое имя одной строке.
- «Спрячем правила внутри модуля»
- Вызывающий код перестаёт знать детали правил — это движение к глубине.
Мини-словарь
- Глубокий модуль (deep module)
- Много поведения за маленьким понятным интерфейсом.
- Мелкий модуль (shallow module)
- Интерфейс почти такой же сложный, как реализация.
Проверьте себя
Какой признак лучше всего говорит о глубине модуля?
Связанные материалы
Основной источник
A Philosophy of Software Design, John Ousterhout.