zhngs

zhngs

c++代码风格

一.格式
1.行长
2.缩进
3.函数声明和定义
4.lambda
5.条件语句和循环语句
6.类
7.指针和引用
8.c++代码格式化工具
二.命名
1.一般规则
2.文件命名规则
3.类型
4.变量名
5.函数名
6.常量名
7.命名空间
8.枚举成员
9.宏
三.排列顺序
1.头文件排列顺序
2.类内成员排列顺序

一.格式

1.行长

  • 一行最大长度为80个字符

2.缩进

  • 谷歌规范只使用空格,不使用制表符,默认缩紧2空格

  • 我认为这个没有硬性规定,4个空格也可以

3.函数声明和定义

  • 谷歌规范函数的{不应该另起一行

  • 尽量在一行,如果一行装不下可以使用多行参数,但是要对齐

  • 声明可以省略上下文显而易见的参数名字,不明确的禁止省略

4.lambda

  • []和()应该在一起,空一格接{}

5.条件语句和循环语句

  • ()左右都应该有空格

  • {不应该单独占一行

6.类

  • 谷歌规范类的{不应该另起一行,初始化列表空4格

7.指针和引用

  • 指针和引用的格式要一致,要么同时左边,要么同时右边

8.c++代码格式化工具

  • clang-format是一个优秀的代码格式化工具

  • 可以在相关代码风格的基础上添加自定义,一个项目应该有自己的.clang-format,比如chromium

二.命名

1.一般规则

  • 不要使用缩略词,清晰明了的语义对可读性非常重要

2.文件命名规则

  • 文件命名应该全部小写,并用下划线连接
  • c++头文件以.h结尾,源文件以.cc结尾

3.类型

  • 类型应该首字母大写,驼峰式写法

4.变量名

  • 变量名应该全小写,使用下划线连接

  • 成员变量最后附加一个下划线

5.函数名

  • 谷歌代码规范认为函数名以大写开头,驼峰式写法,getter函数可以小写,setter函数以set开头加下划线

6.常量名

  • 以k字母开头,驼峰式写法

  • 谷歌代码规范中认为全局变量和静态变量也应该以k开头,我觉得不妥,全局变量应该以g开头,使用下划线连接,线程局部变量应该以t开头,使用下划线连接

7.命名空间

  • 全小写,下划线连接

8.枚举成员

  • 枚举成员应该以k字母开头,驼峰式写法

9.宏

  • 避免使用宏,除非不得不用

  • 宏命名使用全大写字母,下划线连接

三.排列顺序

1.头文件排列顺序

  • 谷歌规范中推荐按照以下顺序包含头文件,不同类别的头文件之间应该有空行
    • 相关头文件
    • C系统头文件
    • C++标准库头文件
    • 其他库的头文件
    • 您的项目的头文件

2.类内成员排列顺序

  • 定义通常应以 public开头,然后是 protected,然后是private

  • 类中的声明应该按照以下顺序

    • 类型和类型别名(typedefusing、 enum、嵌套结构和类以及friend类型)

    • 静态常量

    • 工厂函数

    • 构造函数和赋值运算符

    • 析构函数

    • 所有其他函数(static以及非static成员函数和friend函数)

    • 数据成员(静态和非静态)