теория

Coupling — это просто связь

Смотри. Ты уже потрогал руками — и обжёгся об неё в первый же день. Теперь давай спокойно, без паники, разберём, что это за зверь. Начнём с самого слова, которого все так боятся.

Coupling — от латинского copulare: «co» — вместе, «apere» — скреплять. Coupled значит «соединённый». Так что каждый раз, встречая «связанность», мысленно подставляй «соединённость»: «сервисы сильно связаны» = «сервисы сильно соединены». Уже не так грозно, да?

И вот первый сюрприз: связанность — вообще не дефект. Это свойство любой системы на свете. Шестерни в часах связаны, органы в теле связаны, планеты — гравитацией. А что такое система? Всего три вещи: компоненты, взаимодействия между ними и общая цель. Убери взаимодействия — останется коробка деталей, которая не показывает время.

С софтом ровно то же. Модули, сервисы, классы «Ярмарки» связаны, чтобы система делала своё дело — продавала фермерские продукты. Отсюда три вывода, и они многих удивляют:

  • Свести coupling к нулю нельзя. Если два компонента работают вместе — они хоть что-то знают друг о друге. Ноль связанности = ноль системы.
  • Связи бывают . Существенные нужны для цели. Случайные — паразитные: как та выгрузка, что читала чужие таблицы. Заказам незачем делиться схемой своей базы, чтобы бухгалтерия получила отчёт.
  • Вопрос не «связано или нет», а «насколько сильно». Чем сильнее связь, тем чаще компоненты приходится менять вместе — и тем дороже с ними жить.

Мы привыкли рисовать «коробки» — сервисы и модули. Но дизайн системы — это в той же мере линии между коробками: какое знание по ним течёт и какому знанию запрещено пересекать границу.

← назад