Single Responsibility Principle (SRP)¶
SRP говорит: у модуля, объекта или сервиса должна быть одна причина для изменения.
Про этот принцип часто говорят и по-другому: у модуля должна быть одна ось изменений.
Важно правильно понимать слово "ответственность". В SRP это не "кто отвечает за код" и не "какой разработчик владеет модулем". Ответственность здесь - это код, который нужен для одной причины изменения, одного сценария или одного use case.
Если один и тот же модуль меняют:
- из-за изменения расчета;
- из-за изменения печатной формы;
- из-за нового сценария обмена;
- из-за нового UI-поведения;
то у него уже несколько осей изменений, а значит SRP нарушен.
Что означает в 1С¶
Для 1С это почти всегда вопрос о том, не превратился ли один общий модуль или объект документа в комбайн, где одновременно живут:
- расчет;
- проведение;
- печать;
- обмен;
- уведомления;
- работа формы.
Если эти части меняются по разным причинам, их лучше развести.
То есть полезно спрашивать не "про что этот модуль вообще", а "по какой причине мы будем его менять". Если ответов несколько, модуль, скорее всего, собран слишком широко.
Пример на 1С¶
Где полезен¶
- при проектировании общих модулей;
- в объектных модулях документов и справочников;
- при разбиении слишком больших форм и сервисов.
Когда применяют неправильно¶
- когда ради чистоты модуль режут на десятки бессмысленно мелких файлов;
- когда одна целостная операция искусственно распадается на фрагменты;
- когда вместо простой структуры появляется лишняя бюрократия.