design-patterns - 在 CQS 模式中不为命令返回任何内容有什么好处?
问题描述
我很清楚,当我在类中进行“查询”时对基础数据进行某种修改会产生误导,比如产生getMyValue()
某种副作用。这将很难推理。但是,如果我进行类似的更新updateModel
,我看不出让它返回查询的问题,例如返回实体的正确状态。我会假设更新中的错误会导致抛出异常。不返回任何值只会增加额外的工作来进行查询。
如果我在 CQS 中使用命令返回值,我会有什么遗憾?
解决方案
一般来说,命令如何知道未来的查询?这种模式的目标不是将它们分开吗?当你的命令被设计为知道未来的查询并能够创建相应的查询对象时,这不就像让命令直接执行查询并返回结果一样,因为关注点已经混合了吗?
该模式旨在分离命令和查询的不同关注点。意味着根本不混合它们。
另一个规则是不要使用异常处理来控制应用程序的流程。异常也会使应用程序变慢。目标是避免异常。例外意味着根据定义例外。您的命令应该返回一些错误对象或布尔值。–<br> 除了可能产生副作用的结果对象之外,您可以返回任何内容,因为这是一个指标,关注点是混合的。命令或动作的主要思想是“一劳永逸”(事件也是如此)。
推荐阅读
- bash - 如何检查命令的输出是否包含字符串,如果字符串存在则运行命令
- ffmpeg - ffmpeg mp4 到 hls 限制输出块大小而不是持续时间
- c# - 选择 DropDownList1 值时,DropDownList2 中的重复值存储
- php - 如何在 PHP 中使用 mysql 表中的变量
- javascript - PHP中带有提交按钮的未定义索引
- python - 如何从元组中排除字符串以仅显示整数值?
- metal - 颜色的金属 Alpha 值不变
- php - 在 PHP 中使用更短的代码验证多个输入
- python - 重采样后合并熊猫数据框
- c# - WPF 用户控件未在 WinForms 用户控件中正确加载