命名规则具有一定随意性, 但相比按个人喜好命名, 一致性更重要, 所以无论你认为它们是否重要, 规则总归是规则.
-
通用命名规则:
尽可能使用描述性的命名, 别心疼空间, 毕竟相比之下让代码易于新读者理解更重要. 不要用只有项目开发者能理解的缩写, 也不要通过砍掉几个字母来缩写单词.
int price_count_reader; // 无缩写 int num_errors; // "num" 是一个常见的写法 int num_dns_connections; // 人人都知道 "DNS" 是什么
int n; // 毫无意义. int nerr; // 含糊不清的缩写. int n_comp_conns; // 含糊不清的缩写. int wgc_connections; // 只有贵团队知道是什么意思. int pc_reader; // "pc" 有太多可能的解释了. int cstmr_id; // 删减了若干字母.
-
文件命名规则:
文件名要全部小写, 可以包含下划线 ( _ ) 或连字符 ( - ), 依照项目的约定. 如果没有约定, 那么 “_” 更好.
可以接受的文件命名示例:
my_useful_class.cc my-useful-class.cc myusefulclass.cc
-
类型命名规则:
类型名称的每个单词首字母均大写, 不包含下划线:
MyExcitingClass, MyExcitingEnum.
所有类型命名 —— 类, 结构体, 类型定义 (typedef), 枚举, 类型模板参数 —— 均使用相同约定,即以大写字母开始, 每个单词首字母均大写, 不包含下划线.
例如:
// 类 class UrlTable { ... class UrlTableTester { ... //结构体 struct UrlTableProperties { ... //枚举 enum UrlTableErrors { ...
-
变量命名规则:
变量 (包括函数参数) 和数据成员名一律小写, 单词之间用下划线连接.此外,类的成员变量以下划线结尾, 但结构体的成员变量就不用。
① 普通变量命名:
举例:
string table_name; // 好 - 用下划线. string tablename; // 好 - 全小写. string tableName; // 差 - 混合大小写
②类数据成员:
举例:不管是静态的还是非静态的, 类数据成员都可以和普通变量一样, 但要接下划线.
class TableInfo { ... private: string table_name_; // 好 - 后加下划线. string tablename_; // 好. };
③结构体变量:
不管是静态的还是非静态的, 结构体数据成员都可以和普通变量一样, 不用像类那样接下划线.
struct UrlTableProperties { string name; int num_entries; };
-
函数命名规则:
**常规函数使用大小写混合。取值和设值函数则要求与变量名匹配。MyExcitingFunction(), MyExcitingMethod(), my_exciting_member_variable(), set_my_exciting_member_variable().
一般来说, 函数名的每个单词首字母大写 (即 “驼峰变量名” 或 “帕斯卡变量名”), 没有下划线. 对于首字母缩写的单词, 更倾向于将它们视作一个单词进行首字母大写(例如, 写作 StartRpc() 而非 StartRPC()).
例如:
AddTableEntry() DeleteUrl() OpenFileOrDie()
-
常量命名规则:
声明为const 的变量, 或在程序运行期间其值始终保持不变的, 命名时以 “k” 开头, 大小写混合.
例如:
const int kDaysInAWeek = 7;
-
宏命名规则:
通常不应该使用宏. 如果不得不用,建议采用全大写字母,单词之间加下划线 ’ _ ’ 的命名方式。
例如:
#define ROUND(x) ... #define PI_ROUNDED 3.0
建议:常量建议用const定义代替宏
例如:
const float PI_ROUNDED = 3.0
-
枚举命名规则:
枚举的命名应当和 常量 或 宏 一致: kEnumName 或是 ENUM_NAME.例如:
//常量的命名方式 enum UrlTableErrors { kOK = 0, kErrorOutOfMemory, kErrorMalformedInput, }; //宏的命名方式 enum AlternateUrlTableErrors { OK = 0, OUT_OF_MEMORY = 1, MALFORMED_INPUT = 2, };
常见变量的缩写:
argument可缩写为arg buffer可缩写为buff clock可缩写为clk command可缩写为cmd compare可缩写为cmp configuration可缩写为cfg device可缩写为dev error可缩写为err hexadecimal可缩写为hex increment可缩写为inc, initialize可缩写为init maximum可缩写为max message可缩写为msg minimum可缩写为min parameter可缩写为para previous可缩写为prey register可缩写为reg semaphore可缩写为sem