前言
越来越发现一致的编程风格的重要性,于是把Google的C++编程风格指南看了一遍,
这里记录下于自己有益的rules。当规则有多个选择时,这里只记录个人习惯的用法,
并不代表它是唯一的用法。
Google Style Guide
Google开源项目风格指南
命名约定
命名管理是最重要的一致性规则,因此我把它放在最前面。
1
2
| int num_errors;
int num_completed_connections;
|
- C++文件以.cc 结尾,头文件以.h 结尾。(从.cpp切换到.cc)
1
2
| my_useful_class.cc
my_useful_class.h
|
- 类型命名每个单词以大写字母开头,不包含下划线。类、结构体、类型定义(typedef)
、枚举都使用相同约定。
1
2
3
4
5
6
7
8
9
10
| // classes and structs
class UrlTable { ...
class UrlTableTester { ...
struct UrlTableProperties { ...
// typedefs
typedef hash_map<UrlTableProperties *, string> PropertiesMap;
// enums
enum UrlTableErrors { ...
|
- 变量名一律小写,单词之间用下划线连接。类的成员变量以下划线结尾。
1
2
| my_exciting_local_variable
my_exciting_member_variable_
|
- 结构体的数据成员可以和普通变量一样,不用像类那样接下划线。
1
2
3
4
| struct UrlTableProperties {
string name;
int num_entries;
}
|
- 少用全局变量,要用的话用g作为其前缀(不喜欢用g_)。
1
| const int kDaysInAWeek = 7;
|
1
2
| AddTableEntry()
DeleteUrl()
|
- 取值和设值函数要与存取的变量名匹配,使用小写单词及下划线。
1
2
3
4
5
6
7
8
9
| 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_;
};
|
1
2
3
| void swap(int &a, int &b);
int max(int a, int b);
bool cmp(Type t1, Type t2);
|
- 名字空间用小写字母命名,并基于项目名称和目录结构:
1
2
3
| namespace google_awesome_project {
...
}
|
1
2
3
4
5
| enum UrlTableErrors {
kOK = 0,
kErrorOutOfMemory,
kErrorMalformedInput,
};
|
- 尽量避免使用宏,如果不得不用,请使用大写字母及下划线。
1
2
| #define ROUND(x) ...
#define PI_ROUNDED 3.0
|
声明:自由转载-非商用-非衍生-保持署名 | 创意共享3.0许可证,转载请注明作者及出处
出处:http://hawstein.com/2013/07/14/google-cpp-style-guide/