C++ 命名规范(Google)
需要命名类型 | 命名规范 | 规范命名示例 | 命名形式反例 | 备注 |
---|---|---|---|---|
通用命名规则 | 函数、变量、文件等命名应具有描述性 | int num_errors; | int nerr; | 除非缩写放到项目外也容易明确,否则尽量少使用缩写 |
文件命名 | 文件名全部小写,可以包含下划线(_)或者短线(-) | my_useful_class.cc my_useful_class.h my-useful-class.cc myusefulclass.cc | class.cc Class.h | (1)不要使用已存在的文件名(2)定义类时文件名一般成对出现 (3)内联函数必须放到.h文件中,如果内联函数较短,则直接放到.h文件中,如果代码较长,则放到以-inl.h结尾的文件中(比如url_table-inl.h) |
类型命名 | 类型命名的每个单词首字母大写,不包含下划线 | MyExcitingClass | Myexcitingclass | 包含所有的类、结构体、typedef、枚举 |
普通变量命名 | 变量命名一律小写,单词间以下划线结尾 | string table_name; string tablename; | string tableName; | 普通变量,也适用于结构体的数据成员 |
全局变量 | 全局变量应尽量少用,可以和普通变量使用相同的命名规则,可以以g_用于标记全局变量 | int g_my_first_virable; | * | * |
常量命名 | 常量名称前面加k | kDaysInAWeek | * | 所有编译时常量(无论局部、全局还是类中的)和其他变量保持些许区别,k后面接大写字母开头的单词 |
普通函数命名 | 函数名以大写字母开头,每个单词首字母大写,没有下划线 | AddTableEntry() | add_table_entry() | 普通函数与访问函数等特殊函数相对 |
存取函数 | 存取函数要与所存取的变量名匹配 | * | * | * |
短小的内联函数命名 | 短小的内联函数也可以使用小写字母 | * | * | * |
命名空间 | 命名空间的名称全部小写,其命名基于项目名称和目录结构 | google_awesome_project | * | * |
枚举值命名 | 枚举值应全部大写,单词之间以下划线相连 | MY_EXCITING_ENUM_VALUE | * | * |
枚举名称命名 | 枚举名称属于类型,因此与前述类型命名规则一致,单词首字母大写 | enum UrlTableErrors{} | * | * |
宏命名 | 宏命名与枚举值命名相同,全部大写,用下划线连接 | #define PI 3.14 | * | 通常不要使用宏 |
命名规则的例外 | 当命名与现有C/C++实体相似的对象时,可以参考现有的命名约定 | * | * | * |