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