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