Справочник
Чеклист глубокого модуля
Deep module checklist
Быстрая проверка перед рефакторингом, ревью или задачей для AI-агента. Один слабый ответ не запрещает решение, но показывает, где модуль может оказаться shallow.
Проверочные вопросы
- Can the interface be explained in one minute? Если объяснение требует пройти по внутренним шагам алгоритма, interface уже слишком много рассказывает.
- Does the module hide an important design decision? Deep module прячет важное решение: формат данных, политику валидации, порядок вызовов, retry-логику или другой источник сложности.
- Does the caller get lots of behavior for little interface knowledge? Вызывающий код должен знать мало, а получать много полезного поведения: проверку, нормализацию, ошибки, побочные правила.
- If the module is deleted, will complexity spread across callers? Deletion test: если после удаления сложность размазывается по нескольким местам, модуль действительно держал ее внутри.
- Can behavior be tested through the public interface? Тесты должны проверять наблюдаемое поведение, а не внутренние функции, порядок приватных шагов или временные детали реализации.
- Is there a real reason for a seam and adapter? Seam нужен, когда поведение правда меняется: разные провайдеры, окружения, политики, хранилища или способы интеграции.
- Does the module structure avoid merely mirroring execution order? Хорошая структура отражает скрытые решения и устойчивые границы, а не просто "сначала шаг 1, потом шаг 2, потом шаг 3".
Как читать результат
Чем больше ответов "да", тем выше шанс, что перед вами deep module. Если ответы в основном "нет", модуль, возможно, только переложил сложность в новый файл и увеличил поверхность знания для callers.