📂C/C++
2021-12-02 22:06阅读: 188评论: 0推荐: 0

学习笔记 --《C++编程规范101条规则、准则与最佳实践》

编程规范101条

组织和策略问题

  • 第0条:不要拘泥于小节(又名:了解哪些不应该标准化)
  • 第1条:在高警告级别干净利落地进行编译
  • 第2条:使用自动构建系统
  • 第3条:使用版本控制系统
  • 第4条:做代码审查

设计风格

  • 第5条:一个实体应该只有一个紧凑的职责
  • 第6条:正确、简单和清晰第一
  • 第7条:编程中应知道何时和如何考虑可伸缩性
  • 第8条:不要进行不成熟的优化
  • 第9条:不要进行不成熟的劣化
  • 第10条:尽量减少全局和共享数据
  • 第11条:隐藏信息
  • 第12条:懂得何时和如何进行并发性编程
  • 第13条:确保资源为对象所拥有。使用显式的RAII和智能指针

编程风格

  • 第14条:宁要编译时和连接时错误,也不要运行时错误
  • 第15条:积极使用const
  • 第16条:避免使用宏
  • 第17条:避免使用“魔数”
  • 第18条:尽可能局部的声明变量
  • 第19条:总是初始化变量
  • 第20条:避免函数过长,避免嵌套过深
  • 第21条:避免跨编译单元的初始化依赖
  • 第22条:尽量减少定义性依赖。避免循环依赖
  • 第23条:头文件应该自给自足
  • 第24条:总是编写内部#include保护符,决不要编写外部#inlcude保护符

函数与操作符

  • 第25条:正确的选择通过值、(智能)指针或者引用传递参数
  • 第26条:保持重载操作符的自然语义
  • 第27条:优先使用算数操作符和赋值操作符的标准形式
  • 第28条:优先使用++和--的标准形式。优先调用前缀形式
  • 第29条:考虑重载以避免隐含类型转换
  • 第30条:避免重载&&、||或,(逗号)
  • 第31条:不要编写依赖于函数参数求值顺序的代码

类的设计与继承

  • 第32条:弄清要编写的是哪种类
  • 第33条:用小类替代大类
  • 第34条:用组合替代继承
  • 第35条:避免从并非要设计成基类的类中继承
  • 第36条:优先提供抽象接口
  • 第37条:公用继承即可替代性。继承,不是为了重用,而是为了被重用
  • 第38条:实施安全的覆盖
  • 第39条:考虑将虚拟函数声明为非公用的,将公用函数声明为非虚拟的
  • 第40条:要避免提供隐式转换
  • 第41条:将数据成员设为私有的,无行为的聚集(c语言形式的struct)除外
  • 第42条:不要公开内部数据
  • 第43条:明智地使用Pimpl
  • 第44条:优先编写非成员非友元函数
  • 第45条:总是一起提供new和delete
  • 第46条:如果提供类专门的new,应该提供所有的标准形式(普通、就地和不抛出)

构造、析构与复制

  • 第47条:以同样顺序定义和初始化成员变量
  • 第48条:构造函数中用初始化替代赋值
  • 第49条:避免在构造函数和析构函数中调用虚拟函数
  • 第50条:将基类析构函数设为公用且虚拟的,或者保护且非虚拟的
  • 第51条:析构函数、释放和交换绝对不能失败
  • 第52条:一致地进行复制和销毁
  • 第53条:显式地启用或者禁止复制
  • 第54条:避免切片。在基类中考虑克隆代替复制
  • 第55条:使用赋值的标准形式
  • 第56条:只要可行,就提供不会失败的swap(而且要正确地提供)

名字空间与模块

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

模板与范型

  • 第64条:理智地结合静态多态性和动态多态性
  • 第65条:有意地进行显式自定义
  • 第66条:不要特化函数模板
  • 第67条:不要无意地编写不通用的代码

本文作者:oniisan

本文链接:https://www.cnblogs.com/oniisan/p/cpprules.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   Oniisan_Rui  阅读(188)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起