命名是否具备一致性对代码的可读性影响很大,几百行代码的时候,可能还没什么感觉,但是当代码量达到上千上万时,命名风格统一的优势就能明显感受出来,阅读起来会产生一股浓浓的亲切感。因此在这里记录部分google开源项目风格指南中的命名约定,权当参考。
变量
变量名尽量体现出它的用途,如对于如下两种用于统计错误数的变量,尽量选用第二种
1 int nerr;
2 int num_error;
普通变量
普通变量全部小写,每个单词以下划线 _ 分隔
int num_table;
int ret;
string star_name;
类成员变量
类成员变量全部小写,每个单词以下划线 _ 分隔,同时以_结尾
class A {
...
int num_order_;
int num_child_;
string default_picture_;
};
结构体成员变量
结构体成员变量与普通变量的风格一致
typedef struct {
...
int update_time;
string table_name;
}A;
类型
首字母大写
class FreqController { ...
struct TaskProperties { ...
enum SystemError { ...
常量
普通常量以k开头,单词的首字母大写,如
const int kDaysInWeek = 7;
对于枚举值,全部大写
enum SystemError {
ARGS_ERROR = 10001,
SYSTEM_ERROR = 10002
...
}
宏
与枚举值一样,全部大写
#define MAX_CIRCLE 100
#define MAX_SHM_SIZE 102400
函数
常规函数大小首字母大写,对于取值和设置函数则与变量名匹配,如
//常规命名
GetTableEntry()
//某个类的成员变量key的取值和设置函数
key()
set_key()
命名空间
顶级命名空间的名称应当是项目名或者是该命名空间中的代码所属的团队的名字. 命名空间中的代码, 应当存放于和命名空间的名字匹配的文件夹或其子文件夹中。 同时,命名空间全部采用小写,如
videoplatform::index::table_index;
文件
文件名全部小写,以下划线分隔,如
my_tool_func.c
my_tool_func.h
shm_spin_lock.c
shm_spin_lock.h