Зацепление (coupl ing) — это степень связанности между модулями, классами или компонентами программы. Высокое зацепление означает, что одно изменение в одном компоненте, скорее всего, потребует изменений в другом.
Виды зацепления (от сильного к слабому):
- Контентное зацепление: Модуль обращается или изменяет внутреннее содержимое другого модуля.
- Общее зацепление: Модули используют общие глобальные данные.
- Внешнее зацепление: Модули зависят от формата данных, передаваемых извне, или от внешних устройств/интерфейсов.
- Управляющее зацепление: Один модуль передает управляющие флаги другому модулю, влияя на его логику.
- Штамповое зацепление: Один модуль передает другому структуру данных, но второй модуль использует только часть этой структуры.
- Зацепление по данным: Один модуль передает другому только необходимые ему данные.
- Зацепление по сообщениям (декларативное): Модули взаимодействуют путем передачи сообщений без знания внутренней структуры друг друга (характерно для событий, веб-сервисов).
- Отсутствие зацепления: Модули совершенно независимы.
Низкое зацепление является желательным, так как повышает тестируемость, поддерживаемость и гибкость системы.