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

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

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

(单元测试环境的独立初始化)

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

该规则有点类似于单元测试的独立性,在一个干净整洁的单元测试运行完成后,与该单元测试相关的所有状态都必须消失。更具体地说,在运行所有单元测试时,每个单元测试都必须是应用程序的一个独立的可运行的实例,每个单元测试都必须完全自行设置和初始化其所需的环境,这同样适用于执行单元测试后的清理工作。


(不对 getters 和 setters 做单元测试)

不要为类的简单的 getters(访问器)和 setters(设置器)编写单元测试,如下所示:

代码 2-5 简单的 setters 和 getters

复制代码
void Customer::setForename(const std::string& forename) {
this->forename = forename;
}
std::string Customer::getForename() const {
return forename;
}

你真的认为这样简单而直接的方法会出问题吗?这些成员函数通常非常简单,因此为它们编写单元测试是愚蠢的。此外,这些简单的 getters 和 setters 已经隐式地通过其他且更重要的单元测试进行了测试。

注意,我刚才说到,测试常见且简单的 getters 和 setters 是没有必要的,但有时 getters 和 setters 并不是那么简单。根据我们稍后将讨论的信息隐藏原则(参见 3.5 节“信息隐藏原则”),如果 getter 是简单的,或者它必须通过复杂的逻辑来确定它的返回值,那么它就应该被隐藏起来。因此,有时显式地为一个 getters 或 setters 写出单元测试是很有用的。

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

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

评论

发布