Простота для следующего читателя
Простота кода определяется не количеством строк. Важно, сколько фактов приходится держать в голове, чтобы понять действие. Функция с явным входом и понятным результатом обычно удобнее цепочки коротких помощников со скрытыми зависимостями.
Представим редактор статьи. Для сохранения нужны текст, идентификатор автора и ожидаемая версия. Если проверка владельца находится отдельно от записи, легко забыть её в новом маршруте. Надёжнее выразить оба условия непосредственно в запросе.
UPDATE articles
SET body = $1, version = version + 1
WHERE id = $2
AND author_id = $3
AND version = $4;У каждой проверки есть причина
Условие author_id защищает чужую статью. Условие version предотвращает потерю правки при работе из нескольких вкладок. Оба отвечают конкретному сценарию, поэтому следующий разработчик может понять, зачем они существуют.
А вот универсальный слой обработки всех возможных документов пока не нужен: действующий потребитель — редактор статей. Прямое решение проще расширить, когда появится реальное отличие.
Хороший вопрос перед добавлением слоя
Какой текущий отказ устраняет эта конструкция? Если ответ описывает только гипотетическое будущее, стоит попробовать прямой путь. Архитектура помогает там, где делает владение данными и последствия действий понятнее.