Skip to main content

Що означає принцип єдиної відповідальності?

Принцип єдиної відповідальності (Single Responsibility Principle, SRP) означає, що клас, модуль або функція повинні мати лише одну причину для зміни.

Детальніше:

1. Суть SRP

Кожен компонент системи повинен відповідати за одне логічно цільне завдання. Якщо клас отримує більше однієї відповідальності, він стає складнішим, менш передбачуваним і важче тестованим.

2. Причина для зміни

Під «єдиною причиною для зміни» розуміють те, що якщо два різні аспекти логіки змушують переписувати один і той самий клас, значить, у нього дві відповідальності. Наприклад: зміна бізнес-логіки та зміна формату логів - це різні причини.

3. Навіщо це потрібно

  • Спрощує підтримку коду, тому що зміна в одній частині не ламає іншу.
  • Робить код легшим для тестування - компонент фокусується на одній поведінці.
  • Зменшує зв'язаність (coupling) - зміни в бізнес-правилах не вимагають переписування інфраструктурного коду.

4. Приклад порушення SRP

Клас UserService, який одночасно:

  • створює користувача,
  • надсилає email-сповіщення,
  • записує в лог. Такі обов'язки належать до різних доменів: бізнес-логіка, комунікація, логування.

5. Як виглядає правильно

Замість одного «великого» класу:

  • UserCreator - відповідає тільки за створення користувача,
  • EmailNotifier - тільки за надсилання листів,
  • Logger - тільки за логування. Тоді зміна email-шаблону, наприклад, ніяк не вплине на створення користувача.

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.