《测试驱动数据库开发》—第2章2.2节面向对象编程语言中的类

简介:

本节书摘来自异步社区《测试驱动数据库开发》一书中的第2章2.2节面向对象编程语言中的类,作者【美】Max Guernsey, III,更多章节内容可以访问云栖社区“异步社区”公众号查看。

2.2 面向对象编程语言中的类
测试驱动数据库开发
为何对象的类来到应用开发世界的时间要远远比数据库的类早呢?首先,与在应用开发世界相比,在数据库世界中能让类成为必要元素的影响力没有那么强大,这一点先暂且不谈。其次,相比创建数据库实例,我们能够更加容易地建立可靠的方法来在应用会话中创建对象。

2.2.1 类的构建很容易:构建新对象即可
在面向对象编程的世界中,类其实仅有两个职责:创建新对象和析构(destroy)被废弃的对象。就本书的目的而言,析构其实并不重要。然而,对象的创建绝对是重要的。

在像C#、Java或Ruby语言中,当一个类被请求构建一个新的对象时,该构建过程始于一个空的内存块。此时该内存块里保存的内容与该对象毫不相干,所以该类能够直接用构建该对象所需要的内容覆盖之。在某些情况下,此事就像下面这些操作那样简单,即在虚方法表中添加指针,将余下的字节清零,并委托构造方法进行进一步的初始化操作。在另外一些情况下,此事又像下面这个操作那样复杂,即构建结构化数据来指向各种元数据、方法等。

然而,无论如何,此事是如此的复杂,以至于我们不能用一些简单的数学规则在开发人员对设计的表达与创建一个类型的实例所需的精确的步骤集合之间进行转换。

2.2.2 一条途径:必要时析构
对于一个类,开发人员可能会做下面一些事情。这些事情中有许多是与设计有关的。例如,使用测试先行(test-first)的技术从零开始开发一个类;使用现有的测试来重写一个类;修改一个类的测试套件(suite of tests)来改变类的行为。

有些需要在类上做的事情与部署有关,这会产生两种主要的事情,即构建一个新的对象和更新一个现有的对象。这两件事听起来有所不同,并且因为程序员可能必须要分开处理这两种情况,因此认为这两件事有所不同也是有道理的。但是从编译器的角度看,这两件事其实就是同一件事。

在应用开发环境中创建类为何如此容易,这件事的关键在本节开始的描述中已经说明。当一块内存中的字节交给了一个面向对象编程的类后,该类不必在意这块内存里存储的内容,它可以随意将其清零。有些平台能够保证这些字节从一开始就被清零。

这种对象的类永远只能构建新的实例。如果需要升级旧的实例,该怎么办?通常情况下,先找个其他地方保存旧实例的内容,通过关闭应用系统来析构旧的对象,再通过更新容纳这些对象的二进制文件来更新对象的类,启动升级后的应用系统,再通过从某种持久、简化的格式中提取旧状态的方式来创建新的对象。

本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

相关文章
|
18天前
|
消息中间件 Java 数据库
【消息队列开发】 实现 VirtualHostTests 类——测试虚拟主机操作
【消息队列开发】 实现 VirtualHostTests 类——测试虚拟主机操作
|
18天前
|
消息中间件 存储 测试技术
【消息队列开发】 实现MemoryDataCenterTests类——测试管理内存数据
【消息队列开发】 实现MemoryDataCenterTests类——测试管理内存数据
|
18天前
|
消息中间件 Java 数据库连接
【消息队列开发】 对核心类实现数据库管理
【消息队列开发】 对核心类实现数据库管理
|
10天前
|
JavaScript Java 测试技术
《手把手教你》系列技巧篇(七十一)-java+ selenium自动化测试-自定义类解决元素同步问题(详解教程)
【6月更文挑战第12天】本文介绍了如何创建一个自定义类库来解决自动化测试中的元素同步问题。作者指出,大部分错误源于元素因时间不同步而引发,为此提供了一种解决方案。在项目实践中,首先在`library`包下创建名为`MyWait`的类,包含一个方法`isElementPresent`,该方法通过循环尝试并等待指定元素出现,避免了直接使用时间等待可能导致的不准确性。之后,在测试类中调用此自定义方法,成功实现了元素同步。代码示例展示了如何在Java+Selenium自动化测试中应用这个自定义类。
31 2
|
18天前
|
机器学习/深度学习 人工智能 算法
探索软件测试的新时代:AI驱动的自动化
【6月更文挑战第4天】随着人工智能技术的不断进步,软件测试领域正经历着一场革命。本文将探讨AI如何改变传统的软件测试方法,提高测试效率和准确性,以及这一趋势对测试工程师未来技能要求的影响。
23 6
|
16天前
|
Java 测试技术
测试类基础
测试类基础
13 1
|
21天前
|
机器学习/深度学习 人工智能 安全
探索软件测试的新时代:AI驱动的测试自动化
本文深入探讨了人工智能(AI)如何革新软件测试领域,特别是测试自动化。随着AI技术的不断进步,它为测试自动化带来了前所未有的效率和准确性,从而极大地提高了软件开发的速度和质量。本文将详细介绍AI在软件测试中的应用,以及它如何帮助测试人员克服传统测试方法的局限性。
|
18天前
|
消息中间件 Java 测试技术
【消息队列开发】 测试MessageFileManager(对硬盘中的消息操作)类
【消息队列开发】 测试MessageFileManager(对硬盘中的消息操作)类
|
19小时前
|
Java
springboot Test 测试类中如何排除一个bean类
springboot Test 测试类中如何排除一个bean类
4 0
|
22天前
|
人工智能 自然语言处理 安全
构建未来:AI驱动的自适应网络安全防御系统提升软件测试效率:自动化与持续集成的实践之路
【5月更文挑战第30天】 在数字化时代,网络安全已成为维护信息完整性、保障用户隐私和企业持续运营的关键。传统的安全防御手段,如防火墙和入侵检测系统,面对日益复杂的网络攻击已显得力不从心。本文提出了一种基于人工智能(AI)技术的自适应网络安全防御系统,该系统能够实时分析网络流量,自动识别潜在威胁,并动态调整防御策略以应对未知攻击。通过深度学习算法和自然语言处理技术的结合,系统不仅能够提高检测速度和准确性,还能自主学习和适应新型攻击模式,从而显著提升网络安全防御的效率和智能化水平。 【5月更文挑战第30天】 在快速迭代的软件开发周期中,传统的手动测试方法已不再适应现代高效交付的要求。本文探讨了如