Ограничения и подводные камни

У каждого принципа есть ограничения и область применения. Для SRP характерны следующие ограничения и подводные камни.

Слепое следование опасно

Слепое следование принципу (например, преждевременная оптимизация) может создать лишние абстракции и сделать программу чрезмерно сложной. Использовать SRP стоит тогда, когда вносить изменения в класс, нарушающий его, становится дорого.

Трудность начального проектирования

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

  • Unified Modeling Language, UML;
  • Data flow diagram, DFD;
  • Entity relationship diagram, ERD;
  • Методология моделирования IDEF.

Разработка через тестирование — не панацея, а инструмент

Считается, что разработка через тестирование (Test driven development, TDD) может помочь выделить в классах необходимые методы, но это тоже помогает не всегда. TDD определённо показывает, каким будет видеть наше API пользователь, но он не всегда помогает выделить зоны ответственности модулей.

Материалы к разделу