戏说领域驱动设计(十八)的内验有何独到之处?
- 内容介绍
- 文章标签
- 相关推荐
本文共计4424个文字,预计阅读时间需要18分钟。
验证在我们现实生活中的确非常常见,比如您找工作时先进行整个面试验证您的能力是否可靠;找对象时先进行初步的面试验证对方的价值观和升值空间。有些工程师编写代码从不验证,我认为有三个原因:一是不了解验证的重要性;二是懒于验证;三是缺乏验证的方法。
验证在我们现实的生活中非常常见,比如您找工作得先整个面试验证你的能力是否靠谱;找对象得先验证下对方的颜值和升值空间。有些工程师写代码从不验证,我觉得是有三个原因,一是意识不够,过于相信前端或外部服务;二是个人缺少主动思考的能力;三是团队负责人的问题,您都当了领导了为什么不制定一些基本开发规则给团队树规矩。实际上,验证这个事情说简单也的确不难,不就是个值判断吗?可如果想把这个事情做好还真是一个需要值得思考的工作,就和异常的处理一样,我告诉你就算干了10年的开发都未必知道怎么有效的使用异常。代码里中充满了土味,一看就特Low。所以我们把验证这个事情单独的提出来,越是越是简单的东西想写好才越难。
您应该不知道“对象不变性”这个名字吧?领域模型包括实体与值对象都需要遵循这个规则,就是说不论你对一个领域对像做什么操作,不论怎么盘它,其本质应该保持不变。不都说“江没易改,本性难变”吗?上述的操作不仅是调用对象上的方法,还包括构造对象的过程。有一个例子说“一个没有角的独角兽还能称得上是独角兽吗?”,简单来说就是你需要始终保持领域对象处于合法的状态或者说是属性的值不能超出业务规则限制。比如订单对象:客户信息不能为空、价格信息不能为负数等、订单项数量要大于0小于100等,不论你在订单对象上做什么操作,这些属性值都不可以超出约束。
想要保证对象的“不变性”,不能依赖于前端的输入和数据库本身的约束,那些基本都不靠谱,最好的方式还是首推“验证”。针对对象本身是否合法的验证我称之为“内验”。
本文共计4424个文字,预计阅读时间需要18分钟。
验证在我们现实生活中的确非常常见,比如您找工作时先进行整个面试验证您的能力是否可靠;找对象时先进行初步的面试验证对方的价值观和升值空间。有些工程师编写代码从不验证,我认为有三个原因:一是不了解验证的重要性;二是懒于验证;三是缺乏验证的方法。
验证在我们现实的生活中非常常见,比如您找工作得先整个面试验证你的能力是否靠谱;找对象得先验证下对方的颜值和升值空间。有些工程师写代码从不验证,我觉得是有三个原因,一是意识不够,过于相信前端或外部服务;二是个人缺少主动思考的能力;三是团队负责人的问题,您都当了领导了为什么不制定一些基本开发规则给团队树规矩。实际上,验证这个事情说简单也的确不难,不就是个值判断吗?可如果想把这个事情做好还真是一个需要值得思考的工作,就和异常的处理一样,我告诉你就算干了10年的开发都未必知道怎么有效的使用异常。代码里中充满了土味,一看就特Low。所以我们把验证这个事情单独的提出来,越是越是简单的东西想写好才越难。
您应该不知道“对象不变性”这个名字吧?领域模型包括实体与值对象都需要遵循这个规则,就是说不论你对一个领域对像做什么操作,不论怎么盘它,其本质应该保持不变。不都说“江没易改,本性难变”吗?上述的操作不仅是调用对象上的方法,还包括构造对象的过程。有一个例子说“一个没有角的独角兽还能称得上是独角兽吗?”,简单来说就是你需要始终保持领域对象处于合法的状态或者说是属性的值不能超出业务规则限制。比如订单对象:客户信息不能为空、价格信息不能为负数等、订单项数量要大于0小于100等,不论你在订单对象上做什么操作,这些属性值都不可以超出约束。
想要保证对象的“不变性”,不能依赖于前端的输入和数据库本身的约束,那些基本都不靠谱,最好的方式还是首推“验证”。针对对象本身是否合法的验证我称之为“内验”。

