使用函数式语言建立领域模型 (使用函数式语言的优点)

使用函数式语言建立领域模型 (使用函数式语言的优点)

在领域建模过程中,这是一条非常重要的原则,用通俗的话可以理解为:你建立的领域模型应该有尽可能多的静态检查和约束,让错误发生在编译时,而不是运行时,从而杜绝犯错误的机会。其实整个领域建模都是在遵循这个原则,例如上面的 Email 类型和 Phone 类型,为什么不用 string 来表示呢?因为 string 给与的领域知识不够,从而允许开发人员有了犯错误的机会。让我们最后看一个例子,用来说明这条原则如何被应用在领域建模中。上面领域模型中有一个 contact 类型,包含一个 Email 和 Phone 属性。支付成功后,系统可以通过这两个属性给用户发通知,由此延伸出来这样一条规则:用户必须至少填写 Email 或者 Phone 来接受支付消息。首先,上面的领域模型是不匹配这条业务规则的,因为 Email 和 Phone 类型都是非空类型,意味着这两个属性都应该是必填项。我们能不能把它俩都改为 Option 类型呢?

声明:本文来自用户分享和网络收集,仅供学习与参考,测试请备份。