intermediate

Single Responsibility Principle

Группируйте behavior вокруг одной reason to change, чтобы domain rules, formatting, persistence, transport и orchestration не менялись вместе.

SRP: у модуля одна причина для изменения — одна ось ответственности. Не «один метод», а группировка так, чтобы domain rules, formatting, persistence, HTTP transport и orchestration не менялись вместе. Нарушения — `UserManagerServiceHelper`, к которому лезет каждая feature-команда.

Делите по stakeholder или частоте изменений: pricing — продукт; PDF счёта — дизайн.

На интервью: две причины изменить god class и предложенный шов.

Типовые ошибки: каждая функция в отдельном файле; SRP как «никогда не reuse»; micro-class без связности.

Компромисс — больше типов и wiring против локального impact изменений.

Чеклист:

  • Назовите причину изменения модуля.
  • Domain отдельно от IO и presentation.
  • Без shotgun edits по несвязанным concerns.