Принцип единой ответственности (SRP) Я долгое воспринимал это | Veras IT
Принцип единой ответственности (SRP)
Я долгое воспринимал этот принцип как - функция должна отвечать только за одно действие. Что тоже является хорошим правилом. Но этот принцип всё же о другом.
Дядюшка Боб сформулировал этот принцип как нельзя лучше - "Модуль должен отвечать за одного и только за одного актора". Тут могут внести неясность два слова - модуль и актор.
Модулем может являться что угодно, класс, объект, какая-то обособленная часть кода. И этот модуль у нас у нас отвечает за какое-то определенное действие. Актор - причина для изменений данного кода.
Для понимания лучше всего привести пример с нарушением принципа SRP:
class CarDrive { driveStraight() { ... }
openGarage() { ... } }
Мы видим, что причин для изменения данного класса две - изменения в автомобиле и изменения в гараже. Это явное нарушение принципа. Конечно же для гаража надо создавать отдельный класс с методами, относящимися только к нему.