内容推荐 本书从《C++核心准则》数百个条目中精心挑选了30条准则进行细致、深入的讲解。内容涵盖C++语言最主要的方面,如类型系统、面向对象、模板和元编程、错误处理、程序性能、常量性等,其间又恰如其分地穿插了编码风格、设计模式等主题。探讨的过程中处处可见来自作者数十年职业生涯的经验和示例,除了深入的洞察,行文中充满了趣味性。作者试图通过这种突出重点、以点带面的方式帮助读者了解并学习C++核心准则,进而更深入地掌握C++这门编程语言,特别是它的“现代”形态。 作者简介 J.盖伊·戴维森,Creative Assembly工程实践主管,致力于《全面战争》系列游戏的特许经营,负责游戏目录,并负责提升工程团队的编码水准。他在ISO C++委员会中任职,是#include discord服务器的管理员,在各种C++会议上发言,还通过Prospela和BAME in Games提供C++辅导。 目录 第1章 避重就轻不可取 1.1 P.2:使用ISO C++标准编写代码 1.2 F.51:有选择时优先使用默认参数而非重载 1.3 C.45:不要定义仅初始化数据成员的默认构造函数而应使用类成员初始化 1.4 C.131:避免平凡的get和set函数 1.5 ES.10:每条语句只声明一个名字 1.6 NR.2:不强求函数只用一条return语句 第2章 不要伤害自己 2.1 P.11:将凌乱的结构封装起来,而不是使其散布于代码中 2.2 I.23:尽量减少函数参数 2.3 I.26:使用C风格子集获取跨编译器的ABI 2.4 C.47:按成员声明顺序定义并初始化成员变量 2.5 CP.3:尽量减少可写数据的显式共享 2.6 T.120:只在真正需要时使用模板元编程 第3章 别再使用 3.1 I.11:切勿通过原生指针(T*)或引用(T&)转移所有权 3.2 I.3:避免使用单例 3.3 C.90:依靠构造函数和赋值运算符,而不是memset和memcpy 3.4 ES.50:不要用强制转换去除const限定符 3.5 E.28:避免基于全局状态(如errno)的错误处理 3.6 SF.7:不要在头文件的全局作用域写using namespace 第4章 正确使用新特性 4.1 F.21:优先选择结构体或元组返回多个“输出”值 4.2 Enum.3:优先选择类枚举而不是“普通”枚举 4.3 ES.5:保持作用域小 4.4 Con.5:使用constexpr表示编译时可以计算的值 4.5 T.1:使用模板提高代码的抽象层次 4.6 T.10:为所有模板参数指定概念 第5章 默认写出好代码 5.1 P.4:理想情况下,程序应具有静态类型安全性 5.2 P.10:优先选择不可变数据而不是可变数据 5.3 I.30:封装违反规则的部分 5.4 ES.22:确定初始值后再声明变量 5.5 Per.7:为促成优化而设计 5.6 E.6:使用RAII防止泄露 后记 跋 |