首页 > 解决方案 > 在 CQS 模式中不为命令返回任何内容有什么好处?

问题描述

我很清楚,当我在类中进行“查询”时对基础数据进行某种修改会产生误导,比如产生getMyValue()某种副作用。这将很难推理。但是,如果我进行类似的更新updateModel,我看不出让它返回查询的问题,例如返回实体的正确状态。我会假设更新中的错误会导致抛出异常。不返回任何值只会增加额外的工作来进行查询。

如果我在 CQS 中使用命令返回值,我会有什么遗憾?

标签: design-patterns

解决方案


一般来说,命令如何知道未来的查询?这种模式的目标不是将它们分开吗?当你的命令被设计为知道未来的查询并能够创建相应的查询对象时,这不就像让命令直接执行查询并返回结果一样,因为关注点已经混合了吗?

该模式旨在分离命令和查询的不同关注点。意味着根本不混合它们。
另一个规则是不要使用异常处理来控制应用程序的流程。异常也会使应用程序变慢。目标是避免异常。例外意味着根据定义例外。您的命令应该返回一些错误对象或布尔值。–<br> 除了可能产生副作用的结果对象之外,您可以返回任何内容,因为这是一个指标,关注点是混合的。命令或动作的主要思想是“一劳永逸”(事件也是如此)。


推荐阅读