В чем разница между Cohesion и Coupling

«В чем разница между Cohesion и Coupling» — вопрос из категории Архитектура, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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

Coupling (связанность) — степень зависимости между модулями. Низкая связанность — хорошо, т.к. изменения в одном модуле меньше влияют на другие.

Пример:

// Высокая связность (хорошо)  
class Cart {
  addItem() { /* логика добавления */ }
  removeItem() { /* логика удаления */ }
}

// Низкая связанность (хорошо)  
class Payment {
  process(order) { /* обращается к Order через интерфейс */ }
}

Идеал: высокая связность внутри модуля + низкая связанность между модулями.