公司C++规范学习
2019-06-13 14:50
1626 查看
目录
公司C++规范学习
语法部分
- class和struct关键字的选择:class表示被封装的用户自定义类型,不公开定义非静态数据成员,struct表示数据的简单集合,只定义用于初始化数据成员的方法。
- 必须使用构造函数初始化列表显示初始化直接基类与所有基类类型数据成员。
- 没有复制意义的类必须用DISALLOW_COPY_AND_ASSIGN宏禁止拷贝构造函数和赋值构造函数。 DISALLOW_COPY_AND_ASSIGN 宏就是将复制拷贝函数和赋值操作符声明为私有变量。
-
如果使用默认的拷贝和移动操作,要使用=default定义。
-
托管了资源的类,往往是没有复制意义的。此时应当防止用户错误调用而导致资源泄漏、重复释放的后果。
-
若类定义了虚函数,必须定义虚析构函数。
enum class Side
-
不使用默认捕获(包括&, =), 捕获显示写出来.
-
右值引用的语义比较复杂, 不恰当的使用会造成很难追查的bug.
-
避免使用非布尔型的变量或表达式作为分支语句条件。
-
内部使用的全局函数/变量,必须声明为静态函数、变量,不能在目标文件中出现外部可见的符号。
-
不修改内部状态的成员方法必须声明为 const
风格/约定
- 必须按以下顺序引用头文件,并进行分节:.cpp 对应的头文件(如果有, // 优先位置), C(标准)库,C++(标准)库,其它库,自己项目的.h文件,每节内的include按照字母序。
- 分行与空格: 一条单独的语句必须独立成行。
- 避免连续的空行。
- 使用适当的空行来分组代码的逻辑。
- 左大括号不独立,右大括号独立成行。并且左大括号所在行进行垂直对齐。
-
if/switch/while/for/catch 与后边的圆括号之间加一个空格,圆括号内侧与判断表达式之间不加空格。
-
:函数的参数顺序,建议先安排输入参数,再安排输出参数。
// 输入参数对象类型使用const引用 void foo(const std::string& input1, const MyClass& input2);
命名规范
- 全局可见的,却又无法通过命名空间约束的标识符命名,必须以库名作为前缀,以避免冲突。
- 命名应当尽可能有描述性,不使用非通用的缩写(尤其是省一个字符的缩写如creat,usr等),不使用有歧义的缩写,不使用任意的无意义的字符.
- 标识符的作用域越大,命名就应该越清晰。
- 可能使用多个单位名称的变量(如表示时间的变量),应以单位名称缩写为后缀。
- 文件名全部用小写字母, 中间用_间隔; 比如: this_is_my_awesome_file.cpp.
- 单元测试文件名使用_test.h(.cpp)命名.
- 如果是要发布供它人使用的 lib,推荐仅暴露一个以库名同名,或者_.h的 api 头文件,然后将相关头文件 include 到这个 api 头文件中。如:mylib.h,mylib_utils.h,mylib_api.h。
- 使用下划线分隔的全小写命名法命名命名空间。
- 命名空间名可以使用缩写,同时应保证简短、不易冲突但同时富有意义。
- 函数命名使用下划线分隔的全小写命名法。
- 函数通常使用动词短语命名。
- 自定义类类型使用首字母大写的驼峰命名法命名,一般不使用前缀。
- 枚举类型成员,使用全大写蛇形命名法(即全部字母大写,单词间用下划线分隔)。
- 尽可能不使用全局变量,如果必须使用,必须以g为前缀,而且必须足够长以避免名字冲突。
- 全局变量使用下划线分隔的全小写命名法命名。
- 局部变量名使用下划线分隔的全小写命名法命名。 假如局部变量作用域很小,可以适当使用缩写。
多行注释必须写在被解释内容的上方。单行注释可以写在被注释语句的上文或右方。
显式或者通过宏等隐式的定义派生自第三方代码中所申明的类,必须遵守对应第三方代码自身的编码风格。
相关文章推荐
- 一般互联网公司通用的c++代码规范
- symbian c++ 学习 2 数据类型及代码规范
- 【C/C++学习笔记】C 实现大整数的加法操作 —— 纪念入职公司时的上机题
- 谷歌C++代码规范--翻译学习1
- C++ FAQ学习笔记 27章 编码规范
- C++学习之STL线程安全性考虑
- 在学习C/C++过程中常见的那些坑,一定要多多注意
- [学习笔记] C++ primer plus 第十三章 类继承
- 一个C++程序员的学习经历
- C++学习 traits技术详解
- C++学习笔记9 C++新的关键字
- 面向对象学习【c++】
- Java程序猿学习C++之字符串
- C++学习(七) C++构造函数与析构函数(二)
- 学习c/c++应该看得书and怎么学习c/c++
- C++学习过程
- 【C++学习笔记】简单的多线程程序(摘自孙鑫C++教学视频)
- C++学习笔记(1)
- 【C++学习】mutable关键字、volatile关键字
- C++中函数使用的基本知识学习教程