c++命名规则(抄袭google)

命名约定


1. 通用命名规则(General Naming Rules)


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


如何命名:!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
尽可能给出描述性名称,不要节约空间,让别人很快理解你的代码更重要,好的命名选择:
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. 文件命名(File Names)


文件名要全部小写,可以包含下划线(—),按项目约定来。


例如:
my_useful_class.cpp
myusefulclass.cpp


通常,尽量让文件名更加明确,http_server_logs.h 就比 logs.h 要好,定义类时文件名一
般成对出现,如 foo_bar.h 和 foo_bar.cc,对应类 FooBar。




3. 类型命名(Type Names)


类型命名每个单词以大写字母开头,不包含下划线:MyExcitingClass、MyExcitingEnum。
所有类型命名——类、结构体、类型定义(typedef)、枚举——使用相同约定,例如:
// classes and structs
class UrlTable { ...
class UrlTableTester { ...
struct UrlTableProperties { ...
// typedefs
typedef hash_map<UrlTableProperties *, string> PropertiesMap;
// enums
enum UrlTableErrors { ...


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


普通变量命名:
举例:
string table_name; // OK - uses underscore.
string tablename; // OK - all lowercase.
string tableName; // Bad - mixed case.


类数据成员:
结构体的数据成员可以和普通变量一样,不用像类那样接下划线:
struct UrlTableProperties 
{
string name;
int num_entries;
}


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


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


const int kDaysInAWeek = 7;


普通函数:
函数名以大写字母开头,每个单词首字母大写,没有下划线:
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. 命名空间(Namespace Names)
命名空间的名称是全小写的,其命名基于项目名称和目录结构:google_awesome_project。


8. 枚举命名(Enumerator Names)
枚举值应全部大写,单词间以下划线相连:MY_EXCITING_ENUM_VALUE。
枚举名称属于类型,因此大小写混合:UrlTableErrors。
enum UrlTableErrors 
{
OK = 0,
ERROR_OUT_OF_MEMORY,
ERROR_MALFORMED_INPUT,
};


9. 宏命名(Macro Names)
你并不打算使用宏,对吧?如果使用,像这样:MY_MACRO_THAT_SCARES_SMALL_CHILDREN 。


1. 总体规则:不要随意缩写,如果说 ChangeLocalValue 写作 ChgLocVal 还有情可
原的话,把 ModifyPlayerName 写作 MdfPlyNm 就太过分了,除函数名可适当为动
词外,其他命名尽量使用清晰易懂的名词;
2. 宏、枚举等使用全部大写+下划线;
3. 变量(含类、结构体成员变量)、文件、命名空间、存取函数等使用全部小写+下划线 ,
类成员变量以下划线结尾,全局变量以 g_开头;
4. 普通函数、类型(含类与结构体、枚举类型)、常量等使用大小写混合,不含下划线;
5. 参考现有或相近命名约定。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值