Блок 3 · Урок 5 из 5 · ≈ 9 минут · цель: понять, зачем окупается глубина
Рычаг и локальность
Leverage and locality
Главная мысль: глубокий модуль окупается дважды - дает вызывающему коду рычаг и держит изменения локально.
Рычаг: один интерфейс дает много поведения.
Локальность: менять можно в одном месте.
Зачем это вам
Когда агент предлагает рефакторинг, важно понимать, чем он должен окупиться. “Стало аккуратнее” - слабый критерий. Сильнее спросить: появился ли рычаг для callers и стала ли будущая правка локальнее?
Так вы принимаете архитектурную работу через результат: меньше знания снаружи, меньше мест для изменения, больше поведения за понятным интерфейсом.
Суть
Рычаг (leverage) означает, что один простой интерфейс позволяет вызывающему коду получить много готового поведения: нормализацию, проверки, ошибки, интеграции, кэширование или fallback.
Локальность (locality) означает, что знание и изменения концентрируются рядом. Баг в правилах исправляется в одном модуле, а не в пяти формах, двух API и трех тестах.
Если модуль не дает ни рычага, ни локальности, он может быть просто структурным шумом. Если дает оба - он начинает реально снижать сложность.
Аналогия
Хороший модуль похож на розетку. Пользователь знает простой интерфейс, а внутри спрятаны проводка, автоматы и правила безопасности. Рычаг - можно подключать много устройств. Локальность - проблему с проводкой чинят в щитке, а не в каждом приборе.
Запомните одно
Глубина полезна, когда она дает рычаг callers и локальность maintainers: проще использовать, проще менять.
Фраза агента → что он имеет в виду
- «Callers станут проще»
- Модуль берет на себя поведение, которое раньше должен был знать внешний код.
- «Правка будет локальной»
- Изменение правила потребует редактировать одно место, а не цепочку вызовов.
- «Проверим через публичный интерфейс»
- Тесты будут защищать рычаг модуля, не замораживая его внутреннее устройство.
Мини-словарь
- Leverage
- Рычаг: много полезного поведения за малым знанием об интерфейсе.
- Locality
- Локальность: знание и изменения находятся рядом, а не размазаны по системе.
Проверьте себя
Что показывает, что модуль дает локальность?
Да: локальность - это концентрация знания и изменений.
Связанные материалы
Основной источник
- A Philosophy of Software Design, John Ousterhout.
- Локальный скилл codebase-design: словарь depth, leverage, locality, seam и adapter.