知识卡片

和类型把变化建模进类型、支持穷尽性检查

普通读书笔记卡 · 1979.x

内容

代数数据类型既体现领域知识,又通过和/积类型定义约束规则、建立严格抽象:裸组合 (String,String,Date) 抽象但丢失领域知识(缺类型标签),积类型在抽象同时约束各自类型,和类型更进一步——把“变化”建模到特定数据类型内部、限制取值范围。和类型是逻辑“或”,其每个子类型都成为模式匹配的一个分支,值的个数确定,编译器可检查模式匹配的穷尽性;若缺少某分支会给出警告,新增一个和类型的值时编译器会指出所有需更新模式匹配的地方。发散:用和类型 + 模式匹配替代枚举 + switch,能把“漏处理某种情况”从运行期 bug 变成编译期错误。

参考来源

- 位置:《解构领域驱动设计》附录A A.3.1(源文件:_epub-src/OEBPS/034.xhtml) - 结论依据:原文说明和类型把变化建模进类型内部并支持编译器的模式匹配穷尽性检查。 - 原始内容:和类型在约束上更进了一步,它将“变化”建模到特定的数据类型内部,限制了类型的取值范围……编译器可以检查模式匹配的穷尽性。