我已经阅读了 scott millett 的专业 asp.net 设计模式一书,在他的示例中,他在 Validate() 方法中验证了他的业务逻辑,如果任何破坏的规则被破坏,它们将被添加到集合中,并且服务层调用一个方法该模型称为 GetBrokenRules()。
现在我还阅读了几本关于 DDD 的书籍、博客和论坛,其中说在 DDD 中对象永远不应该进入无效状态。
我看到的所有关于 DDD 的示例都在业务规则被破坏时抛出错误,而不是传回一组被破坏的规则。我什至下载了 scott millett 的最新源代码,他现在更改了他的代码,该代码现在抛出错误,而不是传回被破坏的规则列表。我还看到了与其他 DDD 代码示例相同的方法。
我正在与一个团队成员进行辩论,他认为抛出错误是耗费资源的,我们不应该抛出错误,而是像我们目前所做的那样返回一组被破坏的规则。然而,通过这样做,我们传递了一个无效的对象,因为它有不可靠的数据,我们只在最后检查它的破坏规则。
我只是在想其他人对这个问题的看法。我们是否应该在业务规则失败时立即抛出错误?如果是这样,您能否强调这样做的任何利弊。我不知道 .net 中抛出错误的资源成本有多大,所以我不能反对这一点,但我想知道这是否也是个人意见而不是编码标准的问题。
麦克风