Блок 2 · Урок 1 из 4 · ≈ 8 минут · цель: отделить внешнее знание от внутреннего устройства

Модуль, интерфейс, реализация

Module, interface, implementation

Главная мысль: модуль (module), интерфейс (interface) и реализация (implementation) - обязательный словарь для разговора о глубоких модулях.

Модуль: обещание снаружи, устройство внутри.

Интерфейс: всё, что нужно знать, чтобы пользоваться правильно.

Зачем это вам

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

Так вы управляете границей знания. Снаружи видно обещание, внутри остается свобода менять устройство модуля без каскада правок по приложению.

Суть

Модуль - это любая часть системы, у которой есть интерфейс и реализация. Это может быть функция, класс, файл, компонент, сервис, пакет или целая подсистема.

Интерфейс - это все, что пользователь модуля должен знать, чтобы использовать его правильно. Не только сигнатура функции. В интерфейс входят параметры, результат, ограничения, возможные ошибки, порядок вызовов, побочные эффекты и правила использования.

Реализация - это внутренний способ выполнить обещание интерфейса. Она может быть простой или сложной, но хороший модуль не заставляет внешний код зависеть от внутренних шагов.

Банкомат - хороший образ. Снаружи у него простой интерфейс: вставить карту, ввести PIN, выбрать сумму, получить деньги или ошибку. Внутри сложная банковская реализация: авторизация, лимиты, связь с банком, учет купюр, журналирование. Пользователь не должен знать внутренний алгоритм, чтобы снять деньги правильно.

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

Интерфейс - это не «как модуль устроен», а «что нужно знать, чтобы им пользоваться». Чем меньше обязательного знания снаружи и чем больше полезной работы внутри, тем глубже может стать модуль.

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

«Сделаем публичный интерфейс»
Определим, что можно вызывать снаружи и какие обещания это дает вызывающему коду.
«Спрячем реализацию»
Оставим детали внутри модуля, чтобы другие части системы не начали от них зависеть.
«Тестировать через интерфейс»
Проверим наблюдаемое поведение, а не внутренние шаги, которые можно изменить позже.

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

Module
Модуль: часть системы с границей, внешним способом использования и внутренним устройством.
Interface
Интерфейс: все знания, которые нужны пользователю модуля для правильного использования.
Implementation
Реализация: внутренний механизм, который выполняет обещания интерфейса.

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

Что входит в интерфейс модуля?

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

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