参考中文版谷歌开源项目风格指南,但是并不与其完全相同,整理出来便于规范自己的编码风格。
1、文件命名
2、类型命名
类型包括:类、结构体、类型命名(typedef)、枚举、模板参数 --- 均使用相同命名规定: 以大写字母开始,每个单词首字母均大写,不包含下划线
例如:
// 类和结构体 class UrlTable { ... class UrlTableTester { ... struct UrlTableProperties { ... // 类型定义 typedef hash_map<UrlTableProperties *, string> PropertiesMap; // using 别名 using PropertiesMap = hash_map<UrlTableProperties *, string>; // 枚举 enum UrlTableErrors { ...
3、变量命名
例如:
string table_name; class TableInfo { ... private: string table_name_; static Pool<TableInfo>* pool_; }; struct UrlTableProperties { string name; int num_entries; static Pool<UrlTableProperties>* pool; };
4、常量命名
常量命名和谷歌的编程规范的常量命名的规则不尽相同。命名规则如下:
例如:
const int conDaysInWeek = 7;
5、函数命名
这里的函数分为两种:普通的函数、取值或者设值的函数
例如:
void OpenFile(string file_name); //对应于成员int count; int count();//取值函数 int set_count();//设值函数
6、枚举命名
枚举命名应该保持与常量的命名规则相同,因为枚举类型中的每个元素的值都是确定的。
例如:
enum SystemStatus{ conOK = 0, conLOST = 1, }
7、宏命名
不建议使用宏,宏不会进行类型检查,而且还有可能导致变量重定义等问题。可以使用内联函数代替。
例如:
#define ROUND(x) ... #define PI_ROUNDED 3.0
8、命名空间命名
顶级命名空间的名称应当是项目名或者是该命名空间中的代码所属的团队的名字. 命名空间中的代码, 应当存放于和命名空间的名字匹配的文件夹或其子文件夹中.