本文主要记录易于理解,通用的C++命名规则,此记。
一般命名规则
命名需要尽量是描述性的,避免缩写(特殊情况除外,比如特别常见的缩写num)。
| 1 | int price_count_reader; // 没有缩写 | 
!!!!!下面是不推荐的命名方法!!!!!!!!!1
2
3
4
5
6
7int n;                     // 毫无意义的名字.
int nerr;                  // 模糊的缩写.
int n_comp_conns;          // 模糊的缩写.
int wgc_connections;       // 估计只有你们自己人知道这是代表什么.
int pc_reader;             // 很多东西可以简写为"pc".
int cstmr_id;              // 删除了一些中间的字母.
FooBarRequestInfo fbri;    // 这甚至都不是一个单词.
一些众所周知,比较常用的缩写是可以的,比如i表示迭代变量,T表示模板参数。
命名规则
| 类型 | 命名规则 | 可用特殊符号 | 举例 | 
|---|---|---|---|
| 文件名 | 都是小写字母,可以用下划线“”和破折号“-”,如果没有习惯写法,一般用下划线“” | “_”和“-” | my_useful_class.cc, my_useful_class.h | 
| 类型名 | 类型名以大写字母开头,以下划线开始 | 无 | 类型名包括:classes, structs, type aliases, enums, and type template parameters ,MyExcitingClass, MyExcitingEnum. | 
| 变量名(一般变量名) | 小写字母,单词之间加下划线 | “_” | a_local_variable | 
| 变量名(类成员变量名) | 小写字母,单词之间加下划线,词尾加下划线 | “_” | a_class_data_member_ | 
| 变量名(结构体数据成员名) | 小写字母,单词之间加下划线(或单个单词) | “_” | a_struct_data_member, name,pool | 
| 常数命名 | 常数或常量表达式,需要以小写字母“k”开头,后加大写字母开头的单词,在大写字母无法区分的时候可以添加下划线 | “k”,“_” | kAndroid8_0_0, kDaysInAWeek | 
| 函数名 | 常规函数名以大写字母开头,访问函数和赋值函数可以像一般变量命名规则一样 | 访问函数和赋值函数“_” | AddTableEntry(),访问函数和赋值函数:int count() , void set_count(int count) | 
| 命名空间 | 都是小写字母,最上层的命名空间是基于项目名称的,需要避免和常用的命名空间产生歧义 | 无 | websearch | 
| 枚举类型名 | 枚举类型(for both scoped and unscoped enums)参考常数或者宏定义命名规则 | “_” | kEnumName 或者 ENUM_NAME | 
| 宏定义名 | 宏定义一般不要用,如果必须要用那么应该用全全大写字母,以破折号“_”间隔 | “_” | MY_MACRO_THAT_SCARES_SMALL_CHILDREN_AND_ADULTS_ALIKE | 
文件名
- my_useful_class.cc
- my-useful-class.cc
- myusefulclass.cc
- myusefulclass_test.cc // _unittest and _regtest are deprecated. - 类型名- 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13- // classes and structs 
 class UrlTable { ...
 class UrlTableTester { ...
 struct UrlTableProperties { ...
 // typedefs
 typedef hash_map<UrlTableProperties *, string> PropertiesMap;
 // using aliases
 using PropertiesMap = hash_map<UrlTableProperties *, string>;
 // enums
 enum UrlTableErrors { ...
变量名
一般变量名
| 1 | string table_name; // OK - uses underscore. | 
类成员变量名
| 1 | class TableInfo { | 
结构体数据成员名
| 1 | struct UrlTableProperties { | 
常数命名
| 1 | const int kDaysInAWeek = 7; | 
函数名
| 1 | AddTableEntry() | 
特殊的访问函数或赋值函数1
2int count()
void set_count(int count)
命名空间
| 1 | websearch::index | 
枚举类型名
| 1 | enum UrlTableErrors { | 
宏定义名
宏定义一般不要用,如果必须要用那么应该用全大写和下划线间隔
| 1 | 
命名规则之外
如果你需要对一些C++已有命名规则之外的对象命名,可以参考现有的命名规则。
| 1 | bigopen() | 
 
        