Что такое когезия и связность (cohesion и coupling) в коде?
Уровень: Senior
Ответ
Когезия (сцепление) — это мера того, насколько элементы внутри модуля (класса, функции) связаны друг с другом и работают над единой задачей. Высокая когезия означает, что модуль сфокусирован, выполняет единственную роль или связанную группу функций (например, класс, у которого все методы относятся к одной области ответственности). Связанность (coupling) — это степень зависимости одного модуля от другого. Сильная связность — когда изменения в одном модуле могут потребовать изменений в другом, модули тесно знают детали друг друга; слабая связность — когда модули минимально взаимодействуют через чёткие интерфейсы. Хороший дизайн стремится к высокой когезии (каждый компонент отвечает за своё, не размывая функциональность) и низкой связности (компоненты минимально зависят друг от друга, взаимодействуют через абстракции, что облегчает изменения).