Главное
Объяснение
Каждая сущность в коде должна иметь только одну зону ответственности, должна выполнять только свою функцию и никакую другую.
По факту это значит, что сущность будет иметь наименьшую возможную ответственность, а вся нужная ответственность будет разбита на подсущности.
Примеры
- AuthGuard в Feeldown
- UsersController в Feeldown
- Fenvironment в CsTestShop
- BitField
- BitBuilder в BitField
- Заключение
Что за примеры?
- AuthGuard в Feeldown – разбор двух Guard-ов, которые разделяют аутентификацию и авторизацию. Идеальный пример SRP в NestJS.
- UsersController в Feeldown – как сделать контроллер «тонким», вынеся трансформацию параметров в декоратор.
- Fenvironment в CsTestShop – классический «швейцарский нож»: загрузка .env, валидация и доступ к переменным в одном классе. Показываем, как разбить на три независимые сущности.
- BitField – разделение представления и операций над битовым полем. Отличный пример композиции и наследования без нарушения LSP.
- BitBuilder в BitField – генератор битовых конфигураций, который делал слишком много. Учимся выделять утилиты и строить модульную архитектуру.
Каждый пример сопровождается кодом «до» и «после», а также пояснениями, почему исходный вариант нарушал SRP и как исправление повлияло на тестируемость и гибкость.
Чек-лист: не нарушаете ли вы SRP?
Доступно по ссылке
Важно: SRP — это не про размер, а про направление изменений. Если класс меняется по разным причинам, значит, у него несколько ответственностей. Дробите.
Last updated on