Як SRP пов'язаний з поняттями "cohesion" і "coupling"?
SRP напряму пов'язаний з поняттями зв'язності (cohesion) і зв'язаності (coupling), тому що він підсилює першу і зменшує другу.
Детальніше:
1. Cohesion - внутрішня зв'язність модуля
Висока зв'язність означає, що всі елементи класу логічно стосуються одного завдання. SRP прагне саме до цього: один модуль - одна відповідальність. Якщо відповідальність одна, методи, поля і логіка природно групуються навколо спільної мети - зв'язність зростає.
2. Coupling - залежність між модулями
Низька зв'язаність означає, що, змінюючи один модуль, ми не змушені змінювати інші. Коли клас має кілька обов'язків, він тягне до себе безліч різнорідних залежностей: БД, API, логи, файлову систему. Це підвищує coupling. Застосування SRP розділяє такі обов'язки по окремих компонентах і зменшує кількість залежностей кожного - отже, зменшує coupling.
3. Зв'язок понять
- SRP → підвищує cohesion, тому що модуль стає тематично цільним.
- SRP → зменшує coupling, тому що кожен модуль залежить тільки від того, що стосується його конкретного завдання.
4. Результат для архітектури
Вища зв'язність і нижча зв'язаність ведуть до покращення підтримуваності, модульності і тестованості системи.
Таким чином, SRP - це практичний механізм досягнення високого cohesion і низького coupling в архітектурі.
Коротка відповідь
Для співбесідиКоротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.