乐趣区

关于c++:C编程规范101条规则准则与最佳实践

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

退出移动版