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

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

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

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

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

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

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

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

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