《C++代码设计与重用》——1.4 希望是否尚存

1.4 希望是否尚存

C++代码设计与重用
1.4 希望是否尚存
读了这么多关于重用的障碍之后,你可能会怀疑重用性是否还有存在的希望?毫无疑问,希望是存在的。首先,可重用程序库(既有商用的,也有个人使用的)的大量存在和普及就说明了软件重用是完全有可能的。现今就有几个高质量多用途的程序库存在。例如实现链表、集合和字符串等数据结构的程序库;支持开发用户图形接口和窗口应用程序的程序库;另外还有很多专业程序库,例如数据库程序库、远程通信程序库、股票行情和金融分析程序库,物理数字处理程序库,实际上还有很多。相对于没有存取权限的程序员而言,对这些程序库拥有存取权限的程序员将可以更容易地开发出高质量的软件。

其次,没有程序库可以做到面面俱到。充分考虑你面向的应用领域、应用程序的领域和用户的需求。如果你的应用领域只是诸如10个执行数字处理这样的应用程序,你就没有必要确保你的代码在每个已经写好的C++程序里都可以重用。同样地,如果用户只注重程序的效率,那么我们花很多时间来提供可扩展性和可移植性也是不可取的(可扩展性和移植性一般都会影响效率)。再次,如果你多花些时间来做出正确的设计决定,那么你产生可重用代码的机会将会大大提高。下面是几个在设计基础程序库时需要注意的问题:

程序库的效率如何?
程序库在什么情况下才是可扩展的?
程序库的各个部分之间是如何进行耦合和解耦合的?
程序库的移植性如何?
程序库是否需要使用其他的程序库?
书中还讨论了程序库设计要注意的许多其他问题。

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

时间: 2024-07-30 08:09:25

《C++代码设计与重用》——1.4 希望是否尚存的相关文章

《C++代码设计与重用》导读

前言 C++代码设计与重用 一切事物都将得到检验并因此被称为问题. Edith Hamilton 这本书的主要目的在于:展示如何以C++编程语言编写可重用代码-就是说,根据不同的需要,在不经过修改,或者经过很少修改的前提下,可重用代码可以很容易地应用到5个.50个甚至500个程序当中,而且这些程序往往是不同程序员编写的,可能运行在不同的系统上.在整个阐述的过程中,我们的目的并不在于争论是否所有的代码都是可重用的,也不在于说明可重用代码能够解决所有的程序问题.显然,不论是对程序员而言,还是对可重用

《C++代码设计与重用》——1.5 这本书能给我们带来什么

1.5 这本书能给我们带来什么 C++代码设计与重用 1.5 这本书能给我们带来什么 编写可重用代码可以使复杂的问题变得比较简单,但编码过程是非常困难的.这本书不会也不能让这困难的过程变得格外简单,这本书也没有提供能让每个C++程序员都可以很轻松地编写出可重用代码的锦囊妙计. 针对每个希望编写出可重用代码的C++程序员,这本书的每一章都讨论了一个或者多个他们必须理解的问题.理解了这些问题虽然不能使编写可重用代码变得相当简单,但可以让编写出可重用代码成为一种可能. 这本书的其余部分的结构如下: 当

《C++代码设计与重用》——2.7 转型

2.7 转型 C++代码设计与重用2.7 转型程序库设计者必须充分重视隐式转型(implicit conversion).在C++中,有两种方法可以用来定义从类型From到类型To的隐式转型.第一种,我们可以在类To中定义一个只含一个参数的构造函数(并且没有其他的缺省参数): class To { public: To(const From&); //或者是To(From) //... }; 或者,我们可以在类From中定义一个转型操作: class From { public: operato

《C++代码设计与重用》——2.8 const关键字的使用

2.8 const关键字的使用 C++代码设计与重用2.8 const关键字的使用在程序库中,const关键字的正确使用是很重要的.使用const的最大障碍就是用户往往未能正确理解const的意义.接下来,我们将讨论如何解释const,如何使用const,和当我们要改变const的时候,const为什么不能够被重新解释. 2.8.1 抽象const对比位元const 我们可以用好几种方式来解释关键字const.先考虑函数sqrt,它用于计算Rational对象的平方根(这里的Rational指2

《C++代码设计与重用》——2.4 存在最小标准接口吗

2.4 存在最小标准接口吗 C++代码设计与重用2.4 存在最小标准接口吗一些专家(如[RC90]里的Riel和Carter)在对类进行深入研究之后,主张所有的类都应该提供某个最小标准接口.但究竟应该提供哪种最小标准接口呢?不同专家的建议往往又大相径庭.所有建议的标准接口除了包含nice函数(指nice类提供的函数)外,还包含诸如输入输出函数.哈希函数.以字符串返回类名的函数.浅拷贝和深拷贝操作等. 即使提供某个最小标准接口的动机是好的,但如果试图对所有的类都定义这个最小标准接口,那就是很不可取

《C++代码设计与重用》——1.3 重用的障碍

1.3 重用的障碍 C++代码设计与重用1.3 重用的障碍事实上重用是很难实现的-存在着非技术上和技术上的障碍.非技术上的障碍是指诸如组织结构.社会结构.程序设计文化等阻碍重用的事物.技术障碍是指程序设计本身阻碍重用的各种因素. 1.3.1 非技术障碍 为了理解重用的非技术障碍,我们来考虑重用对C++程序员自身的影响.例如,程序员在一个函数库里设计一个名为Widget的类. 类Widget的设计者应该怀疑设计可重用的Widget类是否会有用处 因为使代码能够被重用是需要时间和精力的,所以大多数程

《C++代码设计与重用》——1.6 练习

1.6 练习 C++代码设计与重用1.6 练习在整本书里,困难的题目将会在题号后面标示(),特别困难的题目会用(*)标示. 1.1 假设你在实现一个函数,这个函数在一个给定的数组中查找某个给定的值. a.在什么情况使用函数时,线性查找的实现比二分查找的实现具有更高的效率. b.为了能在任何环境下,你的查找算法都可以更加高效地执行,你应该如何(使用什么算法)实现这个函数呢? c.假设在这里,我们并不是查找用户给定的值,而是查找第一个0出现的位置,那么需要在什么样的条件下,线性查找才能比二叉查找更有

《C++代码设计与重用》——2.6 接口一致性

2.6 接口一致性 C++代码设计与重用2.6 接口一致性在类的内部和类与类之间,在程序库的内部和程序库与程序库之间,我们都应该尽可能地保持类接口的一致性.很显然,保持程序库与程序库之间的接口一致性,将比保持单个程序库内部的接口一致性更加困难. 接口一致性的重要性要归因于以下几个方面.首先,具有接口一致性的类易于学习和记忆.例如,假设我们正在设计一个容器类程序库.(容器类是一种用来保存值或者对象的集合的类.)下面就是我们设计的程序库所提供的两个类: template<class T> clas

《C++代码设计与重用》——2.10 练习

2.10 练习 C++代码设计与重用2.10 练习2.1 给出下面被建议为最小标准接口函数的反例: a.输入函数: b.输出函数: c.用字符串返回外层类类名的函数. 2.2 考虑类WORM_Pool,它和2.4.1节的Pool类很相似,但这一点除外,它在只能写一次但可读多次的内存区域分配内存块.那么,类WORD_Pool是析构函数的反例吗?请说明是或不是的原因. 2.3 假设我们为用户提供一个类Buf,它描述一个缓冲区: class Buf { public: Buf(size_t sz);