本文主要记录易于理解,通用的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() |