Skip to Content
ПродвинутыйПринцип единой ответственностиГлавное

Главное

Объяснение

Каждая сущность в коде должна иметь только одну зону ответственности, должна выполнять только свою функцию и никакую другую.

По факту это значит, что сущность будет иметь наименьшую возможную ответственность, а вся нужная ответственность будет разбита на подсущности.

Примеры

Что за примеры?

  • AuthGuard в Feeldown – разбор двух Guard-ов, которые разделяют аутентификацию и авторизацию. Идеальный пример SRP в NestJS.
  • UsersController в Feeldown – как сделать контроллер «тонким», вынеся трансформацию параметров в декоратор.
  • Fenvironment в CsTestShop – классический «швейцарский нож»: загрузка .env, валидация и доступ к переменным в одном классе. Показываем, как разбить на три независимые сущности.
  • BitField – разделение представления и операций над битовым полем. Отличный пример композиции и наследования без нарушения LSP.
  • BitBuilder в BitField – генератор битовых конфигураций, который делал слишком много. Учимся выделять утилиты и строить модульную архитектуру.

Каждый пример сопровождается кодом «до» и «после», а также пояснениями, почему исходный вариант нарушал SRP и как исправление повлияло на тестируемость и гибкость.

Чек-лист: не нарушаете ли вы SRP?

Доступно по ссылке

Важно: SRP — это не про размер, а про направление изменений. Если класс меняется по разным причинам, значит, у него несколько ответственностей. Дробите.

Last updated on