未维护订单类型操作的默认值
几周前,我读了一条包含这张照片的推文,有人说:“这就是为什么值类型有用的原因!”。 之后,我想起了几年前发生的情况,因此我决定写一篇关于它的博客文章。
在某些项目中,我看到了很多验证代码,这非常疯狂。 在大多数情况下,方法的参数如Doubles,BigDecimals或Strings,然后在每种方法的开头进行大量业务验证。 这些业务验证分散在整个代码库中,大部分时间都是复制粘贴。 这些验证包含技术验证,例如空检查和业务验证。 由于多种原因,此类情况确实不是最佳选择。
此博客文章描述了即使不进行域驱动设计,也应该了解并使用值类型的概念的原因。
为什么这么糟?
首先, 代码不反映业务领域 。 这些方法参数中的某些参数相互依赖,并且随后的验证检查与该参数结合形成了业务规则,就可维护软件而言,这实际上是很糟糕的。 为什么? 因为该软件提供了产品所有者想要的功能,但是在代码库中很难找到此特定的业务规则,因为您无法搜索该业务人员所说的特定名词。 我已经不止一次遇到这种情况。 我必须掌握整个代码库,因为不清楚在哪里可以找到该业务规则以及哪个类或方法负责。
另一方面, 语义还不清楚 。 当使用字符串而不是值类型作为方法参数时,以错误的方式使用方法会更容易导致错误。 想象一个带有两个Strin