通用命名规则
函数命名、变量命名、文件命名应具有描述性,不要过度缩写,类型和变量应该是名词,函数名可以用“命令性”动词。
尽可能给出描述性名称,不要节约空间,让别人很快理解你的代码更重要,好的命名选择。
int num_errors; // Good.
int num_completed_connections; // Good.
函数名通常是指令性的,如 OpenFile() 、 set_num_errors(),访问函数需要描述的更细致 ,要与其访问的变量相吻合。
int error_count; // Good.
int error_cnt; // Bad.
目录
文件名要全部小写,可以包含下划线(_)或短线(-)也可以不包含,按项目约定来。
可接受的文件命名:
my_useful_class.cc
my-useful-class.cc
myusefulclass.cc
通常,尽量让文件名更加明确,http_server_logs.h 就比 logs.h 要好,定义类时文件名一般成对出现,如 foo_bar.h 和 foo_bar.cc,对应类 FooBar。
类型命名每个单词以大写字母开头,不包含下划线:MyExcitingClass、MyExcitingEnum。所有类型命名包括类、结构体、类型定义(typedef)、枚举使用相同约定,例如:
// classes and structs
class UrlTable { ...
class UrlTableTester { ...
struct UrlTableProperties { ...
// enums
enum UrlTableErrors { ...
变量名一律小写,单词间以下划线相连也可以不用下划线,类的成员变量以下划线结尾,如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;
}
普通函数大小写混合。
普通函数:
函数名以大写字母开头,每个单词首字母大写,没有下划线:
AddTableEntry()
DeleteUrl()
常量命名全部使用大写字母;
枚举值应全部大写,单词间以下划线相连:MY_EXCITING_ENUM_VALUE。
枚举名称属于类型,因此大小写混合:UrlTableErrors。
enum UrlTableErrors {
OK = 0,
ERROR_OUT_OF_MEMORY,
ERROR_MALFORMED_INPUT,
};
每个类的定义要附着描述类的功能和用法的注释,在类顶部添加;
在每一个文件开头加入版权公告,然后是文件内容描述,法律公告和作者信息:
每一文件包含以下项,依次是:
1) 版权(copyright statement):如 Copyright 2008 Google Inc.;
2) 许可版本(license boilerplate):为项目选择合适的许可证版本,如 Apache 2.0、BSD、LGPL、GPL;
3) 作者(author line):标识文件的原始作者。
如果你对其他人创建的文件做了重大修改,将你的信息添加到作者信息里,这样当其他人对该文件有疑问时可以知道该联系谁。
- /*************************************************
- Copyright:bupt
- Author and Email:
- Date:2010-08-25
- Description:描述主要实现的功能
- **************************************************/
函数声明处注释描述函数功能,定义处描述函数实现。
函数声明:
注释于声明之前,描述函数功能及用法,注释使用描述式("Opens the file")而非指令式("Open the file");注释只是为了描述函数而不是告诉函数做什么。通常,注释不会描述函数如何实现,那是定义部分的事情。
函数声明处注释的内容: inputs(输入)及 outputs(输出)