《C++编程规范-101条规则准则与最佳实践》 PDF

2,185 阅读8分钟

《C++编程规范-101条规则准则与最佳实践》

链接: pan.baidu.com/s/1pnMnVgmU… 提取码: ufnu

 在《C++编程规范:101条规则、准则与实践》中,两位知名的C++专家将全球C++界20年的集体智慧和经验凝结成一套编程规范。这些规范可以作为每一个开发团队制定实际开发规范的基础,更是每一位C++程序员应该遵循的行事准则。书中对每一条规范都给出了描述,并辅以实例说明;从类型定义到错误处理,都给出了C++实践,即使使用C++多年的程序员也会从本书中受益匪浅。

0条 不要拘泥于小节(又名:了解哪些东西不应该标准化) 21条 在高警告级别干净利落地进行编译 42条 使用自动构建系统 73条 使用版本控制系统 84条 做代码审查 9设计风格 115条 一个实体应该只有一个紧凑的职责 126条 正确、简单和清晰第一 137条 编程中应知道何时和如何考虑可伸缩性 148条 不要进行不成熟的优化 169条 不要进行不成熟的劣化 1810条 尽量减少全局和共享数据 1911条 隐藏信息 2012条 懂得何时和如何进行并发性编程 2113条 确保资源为对象所拥有。使用显式的RAII和智能指针 24

编程风格 2714条 宁要编译时和连接时错误,也不要运行时错误 2815条 积极使用const 3016条 避免使用宏 3217条 避免使用“魔数” 3418条 尽可能局部地声明变量 3519条 总是初始化变量 3620条 避免函数过长,避免嵌套过深 3821条 避免跨编译单元的初始化依赖 3922条 尽量减少定义性依赖。避免循环依赖 4023条 头文件应该自给自足 4224条 总是编写内部#include保护符,决不要编写外部#include保护符 43

函数与操作符 4525条 正确地选择通过值、(智能)指针或者引用传递参数 4626条 保持重载操作符的自然语义 4727条 优先使用算术操作符和赋值操作符的标准形式 4828条 优先使用++和--的标准形式。优先调用前缀形式 5029条 考虑重载以避免隐含类型转换 5130条 避免重载&&、||或 ,(逗号) 5231条 不要编写依赖于函数参数求值顺序的代码 54

类的设计与继承 5532条 弄清所要编写的是哪种类 5633条 用小类代替巨类 5734条 用组合代替继承 5835条 避免从并非要设计成基类的类中继承 6036条 优先提供抽象接口 6237条 公用继承即可替换性。继承,不是为了重用,而是为了被重用 6438条 实施安全的覆盖 6639条 考虑将虚拟函数声明为非公用的,将公用函数声明为非虚拟的 6840条 要避免提供隐式转换 7041条 将数据成员设为私有的,无行为的聚集(C语言形式的struct)除外 7242条 不要公开内部数据 7443条 明智地使用Pimpl 7644条 优先编写非成员非友元函数 7945条 总是一起提供newdelete 8046条 如果提供类专门的new,应该提供所有标准形式(普通、就地和不抛出) 82

构造、析构与复制 8547条 以同样的顺序定义和初始化成员变量 8648条 在构造函数中用初始化代替赋值 8749条 避免在构造函数和析构函数中调用虚拟函数 8850条 将基类析构函数设为公用且虚拟的,或者保护且非虚拟的 9051条 析构函数、释放和交换绝对不能失败 9252条 一致地进行复制和销毁 9453条 显式地启用或者禁止复制 9554条 避免切片。在基类中考虑用克隆代替复制 9655条 使用赋值的标准形式 9956条 只要可行,就提供不会失败的swap(而且要正确地提供) 100

名字空间与模块 10357条 将类型及其非成员函数接口置于同一名字空间中 10458条 应该将类型和函数分别置于不同的名字空间中,除非有意想让它们一起工作 10659条 不要在头文件中或者#include之前编写名字空间using 10860条 要避免在不同的模块中分配和释放内存 11161条 不要在头文件中定义具有链接的实体 11262条 不要允许异常跨越模块边界传播 11463条 在模块的接口中使用具有良好可移植性的类型 116

模板与泛型 11964条 理智地结合静态多态性和动态多态性 12065条 有意地进行显式自定义 12266条 不要特化函数模板 12667条 不要无意地编写不通用的代码 128

错误处理与异常 12968条 广泛地使用断言记录内部假设和不变式 13069条 建立合理的错误处理策略,并严格遵守 13270条 区别错误与非错误 13471条 设计和编写错误安全代码 13772条 优先使用异常报告错误 14073条 通过值抛出,通过引用捕获 14474条 正确地报告、处理和转换错误 14575条 避免使用异常规范 146

STL:容器 14976条 默认时使用vector。否则,选择其他合适的容器 15077条 用vector和string代替数组 15278条 使用vector(和string::c_str)与非C++ API交换数据 15379条 在容器中只存储值和智能指针 15480条 用push_back代替其他扩展序列的方式 15581条 多用范围操作,少用单元素操作 15682条 使用公认的惯用法真正地压缩容量,真正地删除元素 157

STL:算法 15983条 使用带检查的STL实现 16084条 用算法调用代替手工编写的循环 16285条 使用正确的STL查找算法 16586条 使用正确的STL排序算法 16687条 使谓词成为纯函数 16888条 算法和比较器的参数应多用函数对象少用函数 17089条 正确编写函数对象 172

类型安全 17390条 避免使用类型分支,多使用多态 17491条 依赖类型,而非其表示方式 17692条 避免使用reinterpret_cast 17793条 避免对指针使用static_cast 17894条 避免强制转换const 17995条 不要使用C风格的强制转换 18096条 不要对非POD进行memcpy操作或者memcmp操作 18297条 不要使用联合重新解释表示方式 18398条 不要使用可变长参数(...) 18499条 不要使用失效对象。不要使用不安全函数 185100条 不要多态地处理数组 186

参考文献 187

摘要汇总 193


最后,这里为大家准备了几百本的互联网电子书,有需要的过来取吧。点击获取

本页书籍均来自网络,如有侵权,请联系我立即删除。我的邮箱:yaojianguolq@163.com