在CQS模式中不为命令返回任何内容的好处是什么?

时间:2018-12-21 21:06:41

标签: design-patterns

对我来说很明显,当我在类中执行“查询”时对基础数据进行某种修改会产生误导,例如使getMyValue()产生某种副作用。那将很难推理。但是,如果我进行某种updateModel之类的更新,我看不到让它返回查询(例如返回实体的正确状态)的问题。我认为更新中的错误将导致引发异常。不返回任何值只会增加执行查询的工作量。

如果我使用CQS中的命令返回值,我会后悔什么?

1 个答案:

答案 0 :(得分:0)

通常,命令如何知道将来的查询?将这种模式分开的目的不是吗?当您的命令旨在了解将来的查询并能够创建相应的查询对象时,这与让命令直接执行查询并仅返回结果(因为顾虑已经混杂)一样吗?

模式旨在将命令和查询的不同关注点分开。就是不要混在一起。
另一个规则是不要使用异常处理来控制应用程序的流程。异常也使应用程序变慢。目的是避免 except 。根据定义,例外意味着例外。您的命令应该返回一些错误对象或布尔值。 –
您可以返回除会产生副作用的结果对象以外的任何内容,因为这是一个指标,表明存在各种顾虑。命令或动作的主要思想是“开火”和“忘记”(与事件相同)。