现在我也阅读了几本关于DDD的书籍、博客和论坛,其中提到在DDD中,对象不应进入无效状态。
我看到的所有DDD示例都会在违反业务规则时抛出错误,而不是返回一组破损的规则。我甚至下载了Scott Millett的最新源代码,他现在将代码更改为抛出错误而不是传回破损规则列表。我也看到其他DDD代码示例采用同样的方法。
我正在与一个团队成员进行辩论,他认为抛出错误会消耗资源,我们不应该抛出错误,而应像当前所做的那样返回一组破损的规则。但通过这样做,我们正在传递一个无效的对象,因为它具有不良数据,我们只在最后检查其破损的规则。
我正在思考其他人对此问题的看法。当业务规则失败时,我们应该立即抛出错误吗?如果是这样,你能否列举一些做法的利弊呢?
我不知道在.NET中抛出错误会有多大的资源消耗,所以我无法反驳这一点,但我想知道这是否也是一种个人观点而非编码标准。
Mike