C++编程标准-101条规定准则与最佳实际

下载地址 https://pan.baidu.com/s/1jJfO2W9mf16d7KqwbPJBrQ

扫码上面二维码关注公众号回复 100030获取分享码

本书目录构造如下:

组织和策略问题 1

第0条 不要拘泥于大节(又名:理解哪些货色不应该标准化) 2

第 1条 在高正告级别干净利落地进行编译 4

第 2条 应用主动构建零碎 7

第3条 应用版本控制系统 8

第4条 做代码审查 9设计格调 11

第5条 一个实体应该只有一个紧凑的职责 12

第6条 正确、简略和清晰第 一 13

第7条 编程中应晓得何时和如何思考可伸缩性 14

第8条 不要进行不成熟的优化 16

第9条 不要进行不成熟的劣化 18

第 10条 尽量减少全局和共享数据 19

第 11条 暗藏信息 20

第 12条 懂得何时和如何进行并发性编程 21

第 13条 确保资源为对象所领有。应用显式的RAII和智能指针 24

编程格调 27

第 14条 宁要编译时和连贯时谬误,也不要运行时谬误 28

第 15条 踊跃应用const 30

第 16条 防止应用宏 32

第 17条 防止应用“魔数” 34

第 18条 尽可能部分地申明变量 35

第 19条 总是初始化变量 36

第 20条 防止函数过长,防止嵌套过深 38

第 21条 防止跨编译单元的初始化依赖 39

第 22条 尽量减少定义性依赖。防止循环依赖 40

第 23条 头文件应该自力更生 42

第 24条 总是编写外部#include爱护符,决不要编写内部#include爱护符 43

函数与操作符 45

第 25条 正确地抉择通过值、(智能)指针或者援用传递参数 46

第 26条 放弃重载操作符的天然语义 47

第 27条 优先应用算术操作符和赋值操作符的规范模式 48

第 28条 优先应用++和--的规范模式。优先调用前缀模式 50

第 29条 思考重载以防止隐含类型转换 51

第30条 防止重载&&、||或 ,(逗号) 52

第31条 不要编写依赖于函数参数求值程序的代码 54

类的设计与继承 55

第32条 弄清所要编写的是哪品种 56

第33条 用小类代替巨类 57

第34条 用组合代替继承 58

第35条 防止从并非要设计成基类的类中继承 60

第36条 优先提供形象接口 62

第37条 专用继承即可替换性。继承,不是为了重用,而是为了被重用 64

第38条 施行平安的笼罩 66

第39条 思考将虚构函数申明为非专用的,将专用函数申明为非虚构的 68

第40条 要防止提供隐式转换 70

第41条 将数据成员设为公有的,无行为的汇集(C语言模式的struct)除外 72

第42条 不要公开外部数据 74

第43条 明智地应用Pimpl 76

第44条 优先编写非成员非友元函数 79

第45条 总是一起提供new和delete 80

第46条 如果提供类专门的new,应该提供所有规范模式(一般、就地和不抛出) 82

结构、析构与复制 85

第47条 以同样的程序定义和初始化成员变量 86

第48条 在构造函数中用初始化代替赋值 87

第49条 防止在构造函数和析构函数中调用虚构函数 88

第50条 将基类析构函数设为专用且虚构的,或者爱护且非虚构的 90

第51条 析构函数、开释和替换绝 对不能失败 92

第52条 统一地进行复制和销毁 94

第53条 显式地启用或者禁止复制 95

第54条 防止切片。在基类中思考用克隆代替复制 96

第55条 应用赋值的规范模式 99

第56条 只有可行,就提供不会失败的swap(而且要正确地提供) 100

名字空间与模块 103

第57条 将类型及其非成员函数接口置于同一名字空间中 104

第58条 应该将类型和函数别离置于不同的名字空间中,除非无意想让它们一起工作 106

第59条 不要在头文件中或者#include之前编写名字空间using 108

第60条 要防止在不同的模块中调配和开释内存 111

第61条 不要在头文件中定义具备链接的实体 112

第62条 不要容许异样逾越模块边界流传 114

第63条 在模块的接口中应用具备良好可移植性的类型 116

模板与泛型 119

第64条 理智地联合动态多态性和动静多态性 120

第65条 无意地进行显式自定义 122

第66条 不要特化函数模板 126

第67条 不要无心地编写不通用的代码 128

错误处理与异样 129

第68条 宽泛地应用断言记录外部假如和不变式 130

第69条 建设正当的错误处理策略,并严格遵守 132

第70条 区别谬误与非谬误 134

第71条 设计和编写谬误平安代码 137

第72条 优先应用异样报告谬误 140

第73条 通过值抛出,通过援用捕捉 144

第74条 正确地报告、解决和转换谬误 145

第75条 防止应用异样标准 146

STL:容器 149

第76条 默认时应用vector。否则,抉择其余适合的容器 150

第77条 用vector和string代替数组 152

第78条 应用vector(和string::c_str)与非C++ API替换数据 153

第79条 在容器中只存储值和智能指针 154

第80条 用push_back代替其余扩大序列的形式 155

第81条 多用范畴操作,少用单元素操作 156

第82条 应用公认的习用法真正地压缩容量,真正地删除元素 157

STL:算法 159

第83条 应用带查看的STL实现 160

第84条 用算法调用代替手工编写的循环 162

第85条 应用正确的STL查找算法 165

第86条 应用正确的STL排序算法 166

第87条 使谓词成为纯函数 168

第88条 算法和比拟器的参数应多用函数对象少用函数 170

第89条 正确编写函数对象 172

类型平安 173

第90条 防止应用类型分支,多应用多态 174

第91条 依赖类型,而非其示意形式 176

第92条 防止应用reinterpret_cast 177

第93条 防止对指针应用static_cast 178

第94条 防止强制转换const 179

第95条 不要应用C格调的强制转换 180

第96条 不要对非POD进行memcpy操作或者memcmp操作 182

第97条 不要应用联结从新解释示意形式 183

第98条 不要应用可变长参数(...) 184

第99条 不要应用生效对象。不要应用不平安函数 185

第 100条 不要多态地解决数组 186