SYSTEM ATLASЗагрузка материала

Разделение ответственности

Separation of Concerns

Независимые причины изменений должны быть разделены.

Простыми словами

Разные задачи лучше разделять так, чтобы изменение одной не требовало переписывать остальные. Например, расчёты, хранение данных и внешний вид сайта имеют разные причины меняться. Поэтому явные границы уменьшают путаницу и делают изменения безопаснее.

Механизм действия

Сначала проверяют, есть ли исходное условие из определения. Затем смотрят, как оно влияет на структуру компонентов, потоки данных, ограничения и действия участников. Если эту связь не удаётся наблюдать, принцип не стоит использовать как готовое объяснение.

Пример в работе

Нерабочий подход

В задаче «API» сразу применить привычное решение и назвать происходящее «Разделение ответственности», не проверив, действительно ли работает этот механизм. Так можно улучшить один симптом и пропустить основную причину.

Системный подход

Использовать «Разделение ответственности» как гипотезу: сначала определить границы ситуации и исходное состояние, затем менять только то, что связано с проверяемым механизмом, и смотреть на результат.

Ограничения

Разделение снижает когнитивную связанность, но слишком мелкие границы создают координационные издержки и разбрасывают одну функцию по многим слоям.

Источник

Edsger W. Dijkstra, “On the Role of Scientific Thought”, 1974.

Первоисточник