Какая польза от того, чтобы ничего не возвращать для команд в шаблоне CQS? - PullRequest
0 голосов
/ 22 декабря 2018

Мне ясно, что выполнение некоторой модификации базовых данных, когда я делаю «запрос» в классе, будет вводить в заблуждение, например, заставить getMyValue() вызвать какой-то побочный эффект.Это было бы трудно рассуждать.Но если я делаю какое-то обновление, например updateModel, я не вижу проблемы с тем, чтобы оно возвращало запрос, например, возвращало правильное состояние объекта.Я бы предположил, что ошибка в обновлении может вызвать исключение.Отказ от каких-либо значений просто делает дополнительную работу для выполнения запроса.

Какие сожаления я бы получил, если бы я возвращал значения с командами в CQS?

1 Ответ

0 голосов
/ 22 декабря 2018

В общем, как команда может узнать будущий запрос?Разве цель этого шаблона не состоит в том, чтобы разделить их?Когда ваша команда предназначена для того, чтобы знать будущий запрос и иметь возможность создать соответствующий объект запроса, разве это не то же самое, что иметь команду, выполняющую запрос напрямую и просто возвращающую результат, потому что проблемы уже смешаны?

Шаблон предназначен для разделения различных проблем команды и запроса.Средства просто не смешивают их.
Другое правило - не использовать обработку исключений для управления потоком приложения.Исключения также делают приложение медленным.Цель состоит в том, чтобы избежать исключения с.Исключение означает исключительное по определению.Ваша команда должна скорее вернуть некоторый объект ошибки или логическое значение.-
Вы можете вернуть все, кроме объектов результата, которые могут вызывать побочные эффекты, потому что это показатель того, что проблемы смешаны.Основная идея команды или действия - это огонь и забыть (то же самое для событий).

...