Получи случайную криптовалюту за регистрацию!

Принцип единой ответственности (SRP) Я долгое воспринимал это | Veras IT

Принцип единой ответственности (SRP)

Я долгое воспринимал этот принцип как - функция должна отвечать только за одно действие. Что тоже является хорошим правилом. Но этот принцип всё же о другом.

Дядюшка Боб сформулировал этот принцип как нельзя лучше - "Модуль должен отвечать за одного и только за одного актора".
Тут могут внести неясность два слова - модуль и актор.

Модулем может являться что угодно, класс, объект, какая-то обособленная часть кода. И этот модуль у нас у нас отвечает за какое-то определенное действие.
Актор - причина для изменений данного кода.

Для понимания лучше всего привести пример с нарушением принципа SRP:


class CarDrive {
driveStraight() {
...
}

openGarage() {
...
}
}

Мы видим, что причин для изменения данного класса две - изменения в автомобиле и изменения в гараже. Это явное нарушение принципа. Конечно же для гаража надо создавать отдельный класс с методами, относящимися только к нему.