《Google的C++编码规范》阅读随笔 —— 第五章 命名约定

命名风格直接可以确定命名实体是:类型、变量、函数、常量、宏等等,无需查找实体声明,大脑中的模式匹配引擎依赖于这些命名规则。

1.通用命名规则
函数命名、变量命名。文件命名都应具有描述性,不要过度缩写,类型和变量应该是名词,函数名可以用命令性动词

如何命名:
尽可能给出描述性名词,让人理解你的代码。
类型和变量名一般为名词,如FileOpener,num_errors
函数名通常是指令性的,如OpenFile(),set_num_errors(),访问函数要与其访问的变量相吻合

2.文件命名
文件名要全部小写,可以包含下划线(_)或短线(-),按项目约定来
可接受的文件命名:
my_useful_class.c
my-useful-class.c
myusefulclass.c

不要用已经存在与usr/include下的文件名(对UNIX、Linux系统而言),如db.h
通常,尽量让文件名更加明确,http_server_logs.h就比logs.h好,定义类文件名一般成对出现,如foo_bar.h和foo_bar.c,对应类FooBar

内联函数必须放在h文件中,短的话直接放在h中,长的话放到-inl.h结尾的文件中。对于包含大量内联代码的类,可以有三个文件:
url_table.h usr_table.c url_table-inl.h

3.类型命名
类型命名每个单词以大写字母开头,不包含下划线:MyExcitingClass。

所有类型命名——类、结构体、类型定义(typedef)、枚举——使用相同约定,如:
class UrlTable{...
struct UrlTableProperties{...
typedef hash_map PropertiesMap;
enum UrlTableErrors{...

4.变量命名
变量名一律小写,单词间以下划线相连,类的成员变量以下划线结尾,如my_exciting_local_variable、my_exciting_member_variable_。

结构体的数据成员可以和普通变量一样,不用像类那样以下划线结尾

全局变量没有特别要求,少用就好,可以用g_会其他易与局部变量区分的标志为前缀

5.常量命名
在名称前加k:kDaysInAWeek。
所有编译时常量(无论是局部的、全局的还是类中的)和其他变量保持些许区别,k后接大写字母开头的单词。
const int kDaysInAWeek = 7;

6.函数命名
普通函数大小写混合,存取函数则要求与变量名匹配:MyExcitingFunction(),MyExcitingMethod(),my_exciting_member_varible,set_my_exciting_member_variable()。
普通函数:函数名以大写字母开头,每个单词首字母大写,没有下划线
AddTableEntry(), DeleteUrl()

存取函数:这里摘录一个拥有实例变量num_entries_的类。
class MyClass{
public:
int num_entries() const{ return num_entries_;}
void set_num_entries(int num_entries){num_entries_ = num_entries;}
private:
int num_entries_;
};
其他短小的内联函数也可以使用小写字母,例如,在循环中调用这样的函数甚至都不需要缓存其值,小写命名就可以接收。
注:从这一点上可以看出,小写的函数名意味着可以直接内联使用。

7.命名空间
命名空间的名称全是小写的,其命名基于项目名称和目录结构:google_awesome_project。
关于命名空间,参考第二篇命名空间

8.枚举命名
枚举值应该全部大写,单词间以下划线相连:MY_EXCITING_ENUM_VALUE。
枚举名称属于类型,因此大小写混合:UrlTableErrors。

enum UrlTableErrors{
OK = 0,
ERROR_OUT_OF_MEMORY,
};

9.宏命名
参考第四篇预处理宏,其命名想枚举命名一样全部大写、使用下划线:

define ROUND(x) ...

define PI_ROUNDED 3.0

10.命名规则外
当命名与现有C++实体相似的对象时,可参考现有命名约定:
bigopen()
函数名,参考open()
unit
typedef类型定义
bigpos
struct或class,参考pos
sparse_hash_map
STL相似实体;参考STL命名约定
LONGLONG_MAX
常量,类似INT_MAX

总结:
1)总体规则:不要随意缩写,出函数名可适当为东此外,其他命名尽量使用清晰易懂的名词
2)宏、枚举等全部使用大写 + 下划线
3)变量(含类结构体成员变量)、文件、命名空间、存取函数等全部使用小写+下划线。类成员变量以下划线结尾,全部变量以g_开头。
4)普通函数、类型(含结构体、枚举类型)常量等使用大小写混合,不含下划线。
5)参考现有或相近命名约定

你可能感兴趣的:(《Google的C++编码规范》阅读随笔 —— 第五章 命名约定)