news 2026/5/23 11:42:57

9、编程中的领域值与元对象协议

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
9、编程中的领域值与元对象协议

编程中的领域值与元对象协议

1. 领域值的处理

在编程中,我们可以实现一些进一步的概念,例如向有效值集合中添加所谓的“未定义”(底部)值和其他特殊值。这样做的好处是,我们可以像Ward Cunningham建议的那样,明确区分已定义值和特殊值。

例如,许多开发者在需要将未知的账户号码表示为整数时,会使用类似999这样的变通方法。这意味着按照惯例,他们将一个已定义的整数值变成了一个特殊的未定义值。然而,在不遵循此惯例的程序中就会出现问题,上述方法可能会导致严重的领域错误,而这类程序却无法捕获这些错误。为避免这个问题,我们不能将领域值当作简单的值集合来处理。

从Tony Hoare的开创性工作中我们了解到,类型化不仅应包括已定义的值集合,还应包括对该类型值允许执行的操作。在经典的命令式语言中,为用户定义类型实现这一点很困难,但在面向对象的语言中,我们实际上可以“免费”获得这个选项。

AccountNumber类型的值为例,其允许的操作并不像听起来那么简单。账户号码应允许进行加法和关系运算,因为银行之间批量转账时,账户号码的总和通常作为校验和进行传输。此外,一些银行会在账户号码中添加额外信息,比如可以从账户号码中推导出客户号码或账户类型。这些都是该类型允许的操作。

随着特殊值的引入,我们还可以为处理这些值定义适当的语义。在银行示例中,尝试将一个未定义的账户号码与一个“正常”号码相加可能会导致异常。

另一方面,将领域值类型实现为类也有一些缺点。为避免严重的陷阱,我们必须确保属于领域值类的值始终通过值语义而不是引用语义来处理。这意味着一个领域值对象不能通过两个标识符进行修改,更具体地说,领域值对

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/11 5:51:49

Dify镜像生态现状:插件、社区与第三方集成情况

Dify镜像生态现状:插件、社区与第三方集成情况 在大模型技术席卷各行各业的今天,越来越多企业开始尝试将 LLM(大语言模型)能力嵌入到实际业务中。然而现实往往比想象复杂得多:提示词调来调去效果不稳定,Age…

作者头像 李华
网站建设 2026/5/21 17:31:57

基于Vivado的XADC IP核配置步骤操作指南

用好FPGA里的“内置万用表”:手把手带你玩转Vivado中的XADC IP核 你有没有遇到过这样的场景? 系统跑着跑着突然死机,查来查去发现是芯片过热;或者电源电压悄悄跌落,导致逻辑异常却毫无预警。这时候要是能实时监控内部…

作者头像 李华
网站建设 2026/5/22 17:20:45

从Prompt调试到发布上线,Dify镜像覆盖AI应用全生命周期

从Prompt调试到发布上线,Dify镜像覆盖AI应用全生命周期 在企业纷纷拥抱大模型的今天,一个现实问题摆在面前:为什么很多团队能快速做出AI原型,却难以将它稳定地推上生产环境? 我们见过太多这样的场景——开发人员在本…

作者头像 李华
网站建设 2026/5/12 4:45:53

3、打造快速反馈循环的自动化测试框架

打造快速反馈循环的自动化测试框架 1. 代码优化与反馈循环加速 为了加速测试反馈循环,我们对代码进行了一系列优化。首先,添加了一个同步列表来存储所有 WebDriverThread 实例,并修改了 initialValue() 方法,将创建的每个 WebDriverThread 实例添加到这个新的同步列…

作者头像 李华
网站建设 2026/5/22 17:25:51

4、构建高效测试反馈循环与应对测试失败策略

构建高效测试反馈循环与应对测试失败策略 1. 搭建项目与快速反馈循环 在企业网络限制外部访问的情况下,可下载二进制文件并放置在本地文件服务器,然后更新 RepositoryMap.xml 文件指向该本地服务器,增强项目的灵活性。 项目运行验证操作步骤如下: 1. 使用命令 mvn c…

作者头像 李华
网站建设 2026/5/3 1:22:59

5、自动化测试失败时的正确反馈策略

自动化测试失败时的正确反馈策略 在软件开发过程中,自动化测试是确保软件质量的重要环节。然而,当测试出现问题时,我们需要采取正确的反馈策略来解决问题。本文将探讨自动化测试中常见的问题,如测试闪烁、可靠性问题,并介绍如何通过源代码管理(SCM)钩子和持续集成来提高…

作者头像 李华