Part I: 通用库
优质
小牛编辑
133浏览
2023-12-01
要给本书的这一部分起一个合适的名字并不容易。本书的结构是围绕各个不同领域(如容器和高级编程),那些名字都好取;除了这一部分,它包括一些我们经常用到的东西:智能指针、类型转换工具等等。
总不能一开始第一部分就叫Miscellaneous, 或者 Ubiquitous, 或者 Frequently Used Libraries. 虽然它们的确就是这些东西,但这些名字并不能真正表达它们的重要性。因此,我决定命名为General Libraries, 希望可以表示出它们的无所不在。
一件经常困扰我的事情就是我们关注那些"简单"工具的方式,你应该同意它们是很有用的。在很多书 和文章中,它们都得到了很大的关注,但令人奇怪的是,在为产品代码选择工具(或创建工具)时,它们又往往被低估了。这是因为我们认为这些小组件太简单了 吗?我们是否从根本上就忽略了类似组件的灵活性可以很容易地实现,而是为适应每个问题而手工去重做?如果这些是真的,我们这样做就错了。如果程序中有两百 万个智能指针的实现,会使得智能指针在效率和可靠性方面都很危险。一个程序中有二十个不同的通用类型转换的实现同样也会花掉不少的代码时间,但更重要的是 这样的代码会很难维护。系统应该由多层的抽象组成,底层通常由数据结构、算法和工具组成。如果你同意这一点,想一想这些小的、无关重要的、被忽视的工具发 生变更时的影响,或者是程序缺陷,或者是没有保证的坚固性。这些小工具是船,承载着我们程序的纹理进行交换。它们是我们的逻辑引擎中的油,是我们的隔板间 的胶水。够了,我们应该给予它们应用的信任,不是吗?我们将在这里讨论多个通用库,包括智能指针, 转换 (包括类型转换和文字的转换), 正则表达式, 操作符, 静态断言等等。