C++代码规范

  • C++代码规范
  • 常量使用const,可以用const的情况尽量使用const;
  • 相关的整形常量使用枚举 enum {Monday=1,Tuesday,Wednesday,thusday} WEEKDAY;枚举值不应当重复,枚举变量名不重复;
  • 一个常量只能表示一个功能;
  • 不要使用memset、memcpy初始化类对象;
  • 变量声明同时初始化;
  • 类构造函数不宜过于复杂,特殊情况使用init()函数;
  • 编译器会根据类数据成员在声明时的顺序编译,因此初始化列表要严格按照数据成员声明顺序来初始化;
  • 把有依赖关系的全局变量放在一个文件中按顺序初始化;
  • 使用C++风格的类型转换,dynamic_cast 、static_cast 、reinterpret_cast 、const_cast;
  • 内联函数小于10行;
  • 入参尽量使用const &,避免冗余参数,不提倡缺省参数,不提倡指针;
  • 类功能单一,类数据成员安全性
  • 类之间松耦合;
  • 使用PIMPL(包装)模式,确保私有成员不可见;
  • 为避免隐式转换,单参数函数使用explicit关键字修饰;
  • 有内存分配的类,应自定义赋值运算符、拷贝构造函数、析构函数;
  • 基类析构函数声明为虚函数;
  • 拷贝函数和自定义操作运算符,参数使用const;
  • 多重继承中基类为纯接口类(纯虚);
  • 继承层次不超过3层;
  • 虚函数不使用缺省参数值;
  • 避免隐式转换;
  • 名字空间名建议全小写,但名字空间内不文件包含(include),全局标识的声明/定义以及类的前置声明;
  • 不可在include前使用using;
  • 不使用嵌套类、局部类;
  • 使用静态成员函数或名字空间内的非成员函数代替全局函数;全局函数易造成命名冲突;
  • 节制使用模板,尽量只使用模板的基础特性;
  • extern “C” 内部只应包含函数、变量,若内部使用了#include可能会导致编译错误;
  • 使用sizeof(变量)而不是sizeof(类型);使用sizeof(变量)当变量的类型改变时,sizeof()值会自动更新;
  • 内存申请与释放一般原则:
  • • 对象在退出其作用域时,就应该立即被释放,而且要做到: 谁申请,谁释放。
  • • 函数内分配的内存, 函数退出之前要释放, 避免跨函数释放;
  • • 类中数据成员的内存,在析构函数中确认并释放;
  • • 全局变量、静态变量的内存空间则在进程退出时,或相应的共享库被卸载时,由操作系统回收;
  • • 如果程序分支很多或内存资源的分配与释放不在同一个地方,要考虑使用RAII等资源跟踪管理技术。
  • 用operator new申请内存后要立即检查指针是否为空;
  • 例:char *pBuffer=new char[buffersize];
  • If(pBuffer==NULL)
  • {
  •    return ER_FAIL;
  • }
  • 释放内存后要立即设置指针为NULL;以免产生野指针
  • new对应delete,单个对象释放delete,数组对象释放 delete[];
  • 释放结构指针时,先释放结构内成员指针,再释放成员指针;删除结构指针时必须从底层向上层删除;
  • 释放指针数组时先释放每个数组元素指针的内存;
  • 不要返回局部对象指针,原因:局部对象生命周期只存在于局部,当返回外部时,指针所指对象已被析构,返回的指针变为野指针;
  • 不可强制关闭线程,应当使用线程的退出函数退出线程;
  • 使用RAII;
  •  
  •  
  •  

猜你喜欢

转载自blog.csdn.net/m0_37895939/article/details/86677588