Блок 2 · Урок 1 из 4 · ≈ 8 минут · цель: отделить внешнее знание от внутреннего устройства
Модуль, интерфейс, реализация
Module, interface, implementation
Главная мысль: модуль (module), интерфейс (interface) и реализация (implementation) - обязательный словарь для разговора о глубоких модулях.
Модуль: обещание снаружи, устройство внутри.
Интерфейс: всё, что нужно знать, чтобы пользоваться правильно.
Зачем это вам
Без этого словаря разговор с агентом быстро становится мутным: «сделай красивее», «разнеси по файлам», «упрости». Гораздо полезнее сказать: какую часть системы мы выделяем как модуль, что обещаем внешнему коду через интерфейс и какие детали оставляем внутри как реализацию.
Так вы управляете границей знания. Снаружи видно обещание, внутри остается свобода менять устройство модуля без каскада правок по приложению.
Суть
Модуль - это любая часть системы, у которой есть интерфейс и реализация. Это может быть функция, класс, файл, компонент, сервис, пакет или целая подсистема.
Интерфейс - это все, что пользователь модуля должен знать, чтобы использовать его правильно. Не только сигнатура функции. В интерфейс входят параметры, результат, ограничения, возможные ошибки, порядок вызовов, побочные эффекты и правила использования.
Реализация - это внутренний способ выполнить обещание интерфейса. Она может быть простой или сложной, но хороший модуль не заставляет внешний код зависеть от внутренних шагов.
Банкомат - хороший образ. Снаружи у него простой интерфейс: вставить карту, ввести PIN, выбрать сумму, получить деньги или ошибку. Внутри сложная банковская реализация: авторизация, лимиты, связь с банком, учет купюр, журналирование. Пользователь не должен знать внутренний алгоритм, чтобы снять деньги правильно.
Запомните одно
Интерфейс - это не «как модуль устроен», а «что нужно знать, чтобы им пользоваться». Чем меньше обязательного знания снаружи и чем больше полезной работы внутри, тем глубже может стать модуль.
Фраза агента → что он имеет в виду
- «Сделаем публичный интерфейс»
- Определим, что можно вызывать снаружи и какие обещания это дает вызывающему коду.
- «Спрячем реализацию»
- Оставим детали внутри модуля, чтобы другие части системы не начали от них зависеть.
- «Тестировать через интерфейс»
- Проверим наблюдаемое поведение, а не внутренние шаги, которые можно изменить позже.
Мини-словарь
- Module
- Модуль: часть системы с границей, внешним способом использования и внутренним устройством.
- Interface
- Интерфейс: все знания, которые нужны пользователю модуля для правильного использования.
- Implementation
- Реализация: внутренний механизм, который выполняет обещания интерфейса.
Проверьте себя
Что входит в интерфейс модуля?
Да: интерфейс шире сигнатуры. Он включает все правила, которые внешний код должен соблюдать.
Связанные материалы
- Предыдущий блок: Хороший дизайн для руководителя агента.
- Следующий урок: Интерфейс больше, чем сигнатура.
- Локальный навык codebase-design использует тот же словарь для обсуждения границ модулей в кодовой базе.
Основной источник
- Stanford CS190: Modular Design, John Ousterhout.