Чистая архитектура - Мартин, Роберт
Модуль должен “отвечать” перед одним и только одним “действующим лицом”. Модуль - это просто связный набор функций и структур данных. Связность - это то, что подразумевает SRP, то, что удерживает вместе код, ответственный перед одним действующим лицом. Нарушение SRP приводит к 2 симптомам: случайному дублированию (т.е. использованию одного и того же кода в двух местах, несмотря на то, что код может впоследствии изменяться только в одном месте) и конфликты при слияниях кода. На уровне компонентов SRP превращается в CCP (Common Closure Principle). На уровне архитектуры он становится Axis of Change (осью изменений), отвечающей за проведение архитектурных границ.
- Отражает ли название модуля его опубликованную функциональность?
- Когда требуется внесение изменений, как много составных частей модуля оказываются задействованы? В идеале - очень многие, из-за высокой связности.
Объектно-ориентированная разработка - Head First
Экспресс-тест на соблюдение принципа SRP: выписать все методы класса в формате <Имя класса> сам(а) <название метода> <параметры метода>
и прочитать их вслух. Если получается очевидная бессмыслица - SRP, скорее всего, нарушен. Довольно сложно в таком случае определиться с get-методами, впрочем.
Wikipedia: SRP