SoC: разделяй разные причины изменений
Интерфейс, бизнес-правила, хранение данных и интеграции меняются по разным причинам. Когда они перемешаны в одном модуле, любое изменение начинает затрагивать всё сразу: правка формата ответа задевает бизнес-логику, смена хранилища - валидацию. Separation of Concerns предлагает разделять части именно по причинам изменения, а не по типам файлов.
Важно, что хорошая граница не обязательно означает новый сервис или папку. Иногда достаточно отдельной функции, модуля или явно сформулированного контракта. Цель - не размножить слои, а сделать так, чтобы одна причина для изменения жила в одном месте.
Граница проверяется одним вопросом. Она полезна, если позволяет изменить одну бизнес-причину, не открывая файлы другой бизнес-причины. Если для смены правил доставки приходится лезть в код скидок - граница проведена не там.
Прогнать конкретную ситуацию через этот критерий и понять, нужна ли граница уже сейчас, помогает лаборатория.
Нужна ли граница?
Проведите границу: части меняются по разным причинам. Хватит функции, модуля или контракта.
По какому признаку проводить границу (SoC)?
SoC говорит, ЧТО разделять - по причинам изменения. SOLID помогает спроектировать, КАК провести эти границы в классах и модулях.