C++ 代码整洁之道:C++17 可持续软件开发模式实践 (21):构建安全体系 2.5.9

阅读数:45 2019 年 12 月 4 日 18:48

C++代码整洁之道:C++17可持续软件开发模式实践(21):构建安全体系 2.5.9

(如何处理数据库的访问)

内容简介
本书致力于讲述 C++ 整洁代码之道!如果你想让自己写的代码更加整洁,那么这本书适合你阅读。本书需要熟悉 C++ 语言的基本概念,才能有效的掌握其中的内容。如果你只是想从 C++ 开发开始,并且没有 C++ 语言的基础知识,你应该首先选择一个好的 C++ 入门的练习项目。此外,本书也不包含任何深奥的技巧和杂乱的知识点。我知道 C++ 有很多令人兴奋的技巧,但这些通常不是整洁代码的精神,也不是现代 C++ 的代码风格。除此之外,这本书为了帮助 C++ 程序员提高技能水平,并举例说明如何编写易于理解的、灵活的、可维护的和高效的 C++ 代码。即使你是一个经验丰富的 C++ 开发人员,这本书中也有一些值得学习的地方,我认为这些值得学习的地方能够促进你的工作。书中所提出的原则和实践可以应用于新的软件系统,有时被称为“绿地项目”,以及具有悠久历史的遗留系统,通常被称为“棕地项目”。

目前,许多软件系统都包含(依赖)数据库系统,将大量的对象和数据长期存储到数据库中,从而可以方便地从数据库查询这些对象和数据,当系统被关闭以后,这些对象和数据也不会丢失。

一个很重要的问题是:在单元测试期间,我们应该如何处理数据库的访问?

我对这个问题的第一个也是最重要的建议是:能不使用数据库进行单元测试,就不使用数据库进行单元测试。
——Gerard Meszaros, xUnit Patterns

在单元测试过程中,数据库可能会引起各种各样的问题。例如,如果许多单元测试使用同一个数据库,那么,这个数据库就会趋向于一个大的集中式的存储系统,这些单元测试必须为不同的目的而共享这个数据库。而这种共享,可能会对本章前面讨论过的单元测试的独立性产生不利的影响,可能很难保证每个单元测试所需的前提条件。一个单元测试的执行,可以通过共享的数据库对其他的单元测试产生不好的影响。

另一个问题是,数据库的存储速度是缓慢的。访问数据库的速度比访问计算机内存的速度要慢得多。与数据库交互的单元测试往往比完全不依赖于数据库的单元测试慢得多。假设你有几百个单元测试,每个单元测试需要额外的平均 500 毫秒的时间,这很有可能是由于查询数据库导致的。总之,访问数据库的单元测试比没有访问数据库的单元测试要多花费几分钟的时间。

我的建议是模拟数据库 (参见本章后面 5.2.12 节“测试替身”),只在内存中执行所有的单元测试1。不要担心,如果系统中存在数据库的使用,那么,在系统集成和系统测试级别会测试数据库2

1 单元测试不要访问数据库、磁盘、网络等外设。——译者注

2 数据库测试不是单元测试的内容,它是系统集成和系统测试级别的内容。——译者注

C++代码整洁之道:C++17可持续软件开发模式实践(21):构建安全体系 2.5.9

购书地址 https://item.jd.com/12599914.html?dist=jd

评论

发布