谷歌风格C++命名规则

Posted Overboom

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了谷歌风格C++命名规则相关的知识,希望对你有一定的参考价值。

1. 文件命名

规则
文件名要全部小写, 可以包含下划线 () 或连字符 (-), 依照项目的约定. 如果没有约定, 那么 “” 更好.
举例

    my_useful_class.cc
    my-useful-class.cc

注意
1> C++ 文件要以 .cc 结尾, 头文件以 .h 结尾. 专门插入文本的文件则以 .inc 结尾
2> 内联函数直接放在.h文件中

2. 类型命名

规则
【类, 结构体, 类型定义 (typedef), 枚举, 类型模板参数 均为类型】,以大写字母开始, 每个单词首字母均大写, 不包含下划线。
举例

// 类和结构体
class UrlTable  ...
class UrlTableTester  ...
struct UrlTableProperties  ...

// 类型定义
typedef hash_map<UrlTableProperties *, string> PropertiesMap;

// using 别名
using PropertiesMap = hash_map<UrlTableProperties *, string>;

// 枚举
enum UrlTableErrors  ...

3. 变量命名

规则
变量 (包括函数参数) 和数据成员名一律小写, 单词之间用下划线连接. 类的成员变量以下划线结尾, 但结构体内部的变量的就不用。
举例
1> 普通变量命名

string table_name;  // 好 - 用下划线.
string tablename;   // 好 - 全小写.

string tableName;  // 差 - 混合大小写

2> 类数据成员变量

class TableInfo 
  ...
 private:
  string table_name_;  // 好 - 后加下划线.
  string tablename_;   // 好.
  static Pool<TableInfo>* pool_;  // 好.
;

3> 结构体成员变量

struct UrlTableProperties 
  string name;
  int num_entries;
  static Pool<UrlTableProperties>* pool;
;

4> 全局变量
对全局变量没有特别要求, 少用就好, 但如果你要用, 可以用 g_ 或其它标志作为前缀, 以便更好的区分局部变量.

5> 常量命名
声明为 constexpr 或 const 的变量, 或在程序运行期间其值始终保持不变的, 命名时以 “k” 开头, 大小写混合

const int kDaysInAWeek = 7;

4. 函数命名

规则
函数名的每个单词首字母大写 (即 “驼峰变量名” 或 “帕斯卡变量名”),没有下划线
举例

AddTableEntry()
DeleteUrl()
OpenFileOrDie()

5. 枚举命名

规则
枚举的命名应当和 常量 或 宏 一致: kEnumName 或是 ENUM_NAME.
举例

enum UrlTableErrors 
    kOK = 0,
    kErrorOutOfMemory,
    kErrorMalformedInput,
;
enum AlternateUrlTableErrors 
    OK = 0,
    OUT_OF_MEMORY = 1,
    MALFORMED_INPUT = 2,
;

6. 宏命名

规则
命名像枚举命名一样全部大写, 单词间使用下划线
举例

#define ROUND(x) ...
#define PI_ROUNDED 3.0

以上是关于谷歌风格C++命名规则的主要内容,如果未能解决你的问题,请参考以下文章

Python命名规则与注释风格

如何设置Qt Quick Controls2的风格

java 程序命名规则

详解python的命名规则

C++变量命名规则

google风格C/C++编程规范 --- 命名约定