Связность (coupling) — это мера зависимости между модулями или компонентами программы.
- Высокая связность: Изменения в одном модуле требуют изменений в другом. Усложняет поддержку, тестирование и повторное использование.
- Низкая связность: Модули относительно независимы. Изменения в одном модуле минимально влияют на другие. Способствует гибкости, модульности и облегчает тестирование.
Примеры типов связности (от лучшего к худшему):
- Связанность по данным (Data coupling): Модули обмениваются данными через параметры функций. Идеально.
- Связанность по штампам (Stamp coupling): Модуль передает структуру данных другому модулю, но получатель использует только часть этой структуры. Менее гибко.
- Связанность по управлению (Control coupling): Модуль передает флаг или команду, которая определяет поведение другого модуля. Усложняет понимание потока выполнения.
- Связанность по общим данным (Common coupling): Модули используют одну и ту же глобальную переменную или общую область памяти. Очень опасно, трудно отслеживать изменения.
- Связанность по содержимому (Content coupling): Один модуль напрямую обращается к внутренностям другого модуля (например, к локальным переменным). Наихудший тип, полностью нарушает инкапсуляцию.
Цель — стремиться к низкой связности для создания более поддерживаемого и гибкого кода.