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