Що означає принцип єдиної відповідальності?
Принцип єдиної відповідальності (Single Responsibility Principle, SRP) означає, що клас, модуль або функція повинні мати лише одну причину для зміни.
Детальніше:
1. Суть SRP
Кожен компонент системи повинен відповідати за одне логічно цільне завдання. Якщо клас отримує більше однієї відповідальності, він стає складнішим, менш передбачуваним і важче тестованим.
2. Причина для зміни
Під «єдиною причиною для зміни» розуміють те, що якщо два різні аспекти логіки змушують переписувати один і той самий клас, значить, у нього дві відповідальності. Наприклад: зміна бізнес-логіки та зміна формату логів - це різні причини.
3. Навіщо це потрібно
- Спрощує підтримку коду, тому що зміна в одній частині не ламає іншу.
- Робить код легшим для тестування - компонент фокусується на одній поведінці.
- Зменшує зв'язаність (coupling) - зміни в бізнес-правилах не вимагають переписування інфраструктурного коду.
4. Приклад порушення SRP
Клас UserService, який одночасно:
- створює користувача,
- надсилає email-сповіщення,
- записує в лог. Такі обов'язки належать до різних доменів: бізнес-логіка, комунікація, логування.
5. Як виглядає правильно
Замість одного «великого» класу:
UserCreator- відповідає тільки за створення користувача,EmailNotifier- тільки за надсилання листів,Logger- тільки за логування. Тоді зміна email-шаблону, наприклад, ніяк не вплине на створення користувача.
Коротка відповідь
Для співбесідиPremium
Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.