《测试驱动数据库开发》—第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)来改变类的行为。

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

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

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

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

相关文章
|
4月前
|
人工智能 自然语言处理 测试技术
从人工到AI驱动:天猫测试全流程自动化变革实践
天猫技术质量团队探索AI在测试全流程的落地应用,覆盖需求解析、用例生成、数据构造、执行验证等核心环节。通过AI+自然语言驱动,实现测试自动化、可溯化与可管理化,在用例生成、数据构造和执行校验中显著提效,推动测试体系从人工迈向AI全流程自动化,提升效率40%以上,用例覆盖超70%,并构建行业级知识资产沉淀平台。
从人工到AI驱动:天猫测试全流程自动化变革实践
|
7月前
|
数据采集 人工智能 监控
人工智能驱动的软件工程:测试左移的崛起价值
本文探讨了人工智能驱动下测试左移理念在软件工程中的重要性,分析测试工程师在需求评估、AI代码生成及遗留系统优化中的关键作用,揭示AI带来的挑战与机遇,并指出测试工程师需提升技能、关注合规与可维护性,以在AI时代保障软件质量。
418 89
|
8月前
|
测试技术 程序员 Go
Go语言测试简明指南:深度解读go test命令
总的来说,go test是 Go 语言中一个强而有力的工具,每个 Go 程序员都应该掌握并把它融入到日常的开发和调试过程中。就像是一个眼镜过滤出的太阳,让我们在宽阔的代码海洋中游泳,而不是淹没。用好它,让我们的代码更健壮,让我们的生产力更强效。
612 23
|
10月前
|
人工智能 自然语言处理 JavaScript
测试工程师要失业?Magnitude:开源AI Agent驱动的端到端测试框架,让Web测试更智能,自动完善测试用例!
Magnitude是一个基于视觉AI代理的开源端到端测试框架,通过自然语言构建测试用例,结合推理代理和视觉代理实现智能化的Web应用测试,支持本地运行和CI/CD集成。
1361 15
测试工程师要失业?Magnitude:开源AI Agent驱动的端到端测试框架,让Web测试更智能,自动完善测试用例!
|
数据采集 人工智能 自然语言处理
Midscene.js:AI 驱动的 UI 自动化测试框架,支持自然语言交互,生成可视化报告
Midscene.js 是一款基于 AI 技术的 UI 自动化测试框架,通过自然语言交互简化测试流程,支持动作执行、数据查询和页面断言,提供可视化报告,适用于多种应用场景。
3540 1
Midscene.js:AI 驱动的 UI 自动化测试框架,支持自然语言交互,生成可视化报告
|
机器学习/深度学习 人工智能 自然语言处理
智能化软件测试:AI驱动的自动化测试策略与实践####
本文深入探讨了人工智能(AI)在软件测试领域的创新应用,通过分析AI技术如何优化测试流程、提升测试效率及质量,阐述了智能化软件测试的核心价值。文章首先概述了传统软件测试面临的挑战,随后详细介绍了AI驱动的自动化测试工具与框架,包括自然语言处理(NLP)、机器学习(ML)算法在缺陷预测、测试用例生成及自动化回归测试中的应用实例。最后,文章展望了智能化软件测试的未来发展趋势,强调了持续学习与适应能力对于保持测试策略有效性的重要性。 ####
|
SQL 存储 BI
gbase 8a 数据库 SQL合并类优化——不同数据统计周期合并为一条SQL语句
gbase 8a 数据库 SQL合并类优化——不同数据统计周期合并为一条SQL语句
|
数据可视化 前端开发 测试技术
接口测试新选择:Postman替代方案全解析
在软件开发中,接口测试工具至关重要。Postman长期占据主导地位,但随着国产工具的崛起,越来越多开发者转向更适合中国市场的替代方案——Apifox。它不仅支持中英文切换、完全免费不限人数,还具备强大的可视化操作、自动生成文档和API调试功能,极大简化了开发流程。
|
8月前
|
Java 测试技术 容器
Jmeter工具使用:HTTP接口性能测试实战
希望这篇文章能够帮助你初步理解如何使用JMeter进行HTTP接口性能测试,有兴趣的话,你可以研究更多关于JMeter的内容。记住,只有理解并掌握了这些工具,你才能充分利用它们发挥其应有的价值。+
1227 23
|
10月前
|
SQL 安全 测试技术
2025接口测试全攻略:高并发、安全防护与六大工具实战指南
本文探讨高并发稳定性验证、安全防护实战及六大工具(Postman、RunnerGo、Apipost、JMeter、SoapUI、Fiddler)选型指南,助力构建未来接口测试体系。接口测试旨在验证数据传输、参数合法性、错误处理能力及性能安全性,其重要性体现在早期发现问题、保障系统稳定和支撑持续集成。常用方法包括功能、性能、安全性及兼容性测试,典型场景涵盖前后端分离开发、第三方服务集成与数据一致性检查。选择合适的工具需综合考虑需求与团队协作等因素。
1604 24