Блок 3 · Урок 9 · ≈ 9 минут

Глубокий и мелкий модуль

Цель: увидеть глубину как свойство интерфейса, а не размера файла.

Глубокий: мало знать снаружи, много получать внутри.

Мелкий: интерфейс почти такой же сложный, как реализация.

Зачем это вам

AI-агент легко предлагает «вынести в отдельный модуль». Но новый файл сам по себе не уменьшает сложность. Спросите: стал ли внешний код знать меньше?

Суть

Глубокий модуль (deep module) скрывает важное решение: формат данных, правила валидации, политику ошибок, retry-логику или работу с провайдером.

Мелкий модуль (shallow module) имеет интерфейс почти такой же сложный, как его внутренняя работа.

Глубина не равна размеру. Маленькая функция может скрывать важное знание, а большой класс — только передавать вызовы дальше.

Аналогия

Глубокий модуль похож на банкомат: снаружи несколько понятных действий, внутри много правил и интеграций. Мелкий модуль похож на табличку «спросите сотрудника»: интерфейс есть, но всю сложность несёт пользователь.

Запомните одно

Модуль становится глубоким, когда внешний код знает меньше деталей и получает больше поведения.

Фраза агента → что он имеет в виду

«Вынесу это в helper»
Проверьте, helper скрывает решение или только даёт новое имя одной строке.
«Спрячем правила внутри модуля»
Вызывающий код перестаёт знать детали правил — это движение к глубине.

Мини-словарь

Глубокий модуль (deep module)
Много поведения за маленьким понятным интерфейсом.
Мелкий модуль (shallow module)
Интерфейс почти такой же сложный, как реализация.

Проверьте себя

Какой признак лучше всего говорит о глубине модуля?

Связанные материалы

Основной источник

A Philosophy of Software Design, John Ousterhout.

Курс под вашу задачу

Это только один фрагмент. Полную программу «Глубокие модули» можно изучать 7 дней после одобрения заявки. По той же методике можно создать курс под другую тему, одного человека или группу.

Запросить доступ к полному курсу ↗