Google命名规范(C++)笔记
一、命名约定
-
1、函数命名、变量命名、文件命名应具有描述性,不要过度缩写,类型和变量应该是名词,函数名可以用“命令性”动词。 如何命名: 尽可能给出描述性名称,不要节约空间,让别人很快理解你的代码更重要,好的命名选择: int num_errors; // Good. int num_completed_connections; // Good. 丑陋的命名使用模糊的缩写或随意的字符: int n; // Bad - meaningless. int nerr; // Bad - ambiguous abbreviation. int n_comp_conns; // Bad - ambiguous abbreviation. 类型和变量名一般为名词:如 FileOpener、num_errors。 函数名通常是指令性的,如 OpenFile() 、 set_num_errors(),访问函数需要描述的更细致 , 要与其访问的变量相吻合。 缩写: 除非放到项目外也非常明了,否则不要使用缩写,例如: // Good // These show proper names with no abbreviations. int num_dns_connections; // Most people know what "DNS" stands for. int price_count_reader; // OK, price count. Makes sense. // Bad! // Abbreviations can be confusing or ambiguous outside a small group. int wgc_connections; // Only your group knows what this stands for. int pc_reader; // Lots of things can be abbreviated "pc". 不要用省略字母的缩写: int error_count; // Good. int error_cnt; // Bad 2、文件名要全部小写,可以包含下划线(_)或短线(-),按项目约定来; 通常,尽量让文件名更加明确,http_server_logs.h就比logs.h要好,定义类时文件名一般成对出现。 // 可接受的文件命名: my_useful_class_cc my-useful-class.cc myusefulclass.cc 内联函数必须放在.h文件中,如果内联函数比较短,就直接放在.h中。如果代码比较长,可以放到以-inl.h结尾的文件中。对于包含大量内联代码的类,可以有三个文件: url_table.h // The class declaration. url_table.cc // The class definition. url_table-inl.h // Inline functions that include lots of code. 三、类型命名每个单词以大写字母开头,不包含下划线:MyExciting、MyExcitingEnum.所有类型命名–类、结构体、类型定义(typedef)、枚举–使用相同约定。 四、变量名一律小写,单词间以下划线相连,类的成员变量以下划线结尾,全局变量可以使用g_作为前缀。结构体的数据成员可以和普通变量一样,不用像类一样接下划线。 五、常量命名在名称前加K,所有编译时常量和其他变量保持些许区别,K后接大写字母开头的单词,如 const int kDaysInAWeek; 六、 函数命名(Function Names) 普通函数(regular functions,译者注,这里与访问函数等特殊函数相对) 大小写混合, 存取函数(accessors and mutators)则要求与变量名匹配: MyExcitingFunction()、 MyExcitingMethod()、my_exciting_member_variable()、 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_; }; 其他短小的内联函数名也可以使用小写字母,例如,在循环中调用这样的函数甚至都不需要 缓存其值,小写命名就可以接受。 译者注:从这一点上可以看出,小写的函数名意味着可以直接内联使用. 七、命名空间的名称是全小写的,其命名基于项目名称和目录结构:google_awesome_project. 八、枚举命名应全部大写,单词间以下划线相连:MY_EXCITING_ENUM_VALUE;枚举名称属于类型,因此大小写混合:UrlTableErrors enum UrlTableErrors { OK = 0, ERROR_OUT_OF_MEMORY, ERROR_MALFORMED_INPUT, }; 宏命名,其命名想枚举命名一样全部大写、使用下划线。
