Google C++编程风格指南
2013-10-13 21:59
246 查看
Google C++编程风格指南
前言
从小就写字很挫,所以受够了被人鄙视的感觉,今天有个coder突然跟我说,你的代码怎么像小孩写的一样,顿时心情沮丧的极点。越来越发现一致的编程风格的重要性,于是把Google的C++编程风格指南看了一遍, 这里记录下于自己有益的rules。当规则有多个选择时,这里只记录个人习惯的用法, 并不代表它是唯一的用法。
命名约定
命名管理是最重要的一致性规则,因此我把它放在最前面。尽可能给出描述性名称。
int num_errors; int num_completed_connections;
文件名全部小写,用下划线做连接符。
my_useful_class.cc
C++文件以.cc 结尾,头文件以.h 结尾。(从.cpp切换到.cc)
my_useful_class.cc my_useful_class.h
类型命名每个单词以大写字母开头,不包含下划线。类、结构体、类型定义(typedef) 、枚举都使用相同约定。
// classes and structs class UrlTable { ... class UrlTableTester { ... struct UrlTableProperties { ... // typedefs typedef hash_map<UrlTableProperties *, string> PropertiesMap; // enums enum UrlTableErrors { ...
变量名一律小写,单词之间用下划线连接。类的成员变量以下划线结尾。
my_exciting_local_variable my_exciting_member_variable_
结构体的数据成员可以和普通变量一样,不用像类那样接下划线。
struct UrlTableProperties { string name; int num_entries; }
少用全局变量,要用的话用g作为其前缀(不喜欢用g_)。
bool gInvalid = false;
常量命名在名称前加k。
const int kDaysInAWeek = 7;
函数名的每个单词首字母大写,没有下划线。
AddTableEntry() DeleteUrl()
取值和设值函数要与存取的变量名匹配,使用小写单词及下划线。
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_; };
非常短小的内联函数也可以用小写字母命名。
void swap(int &a, int &b); int max(int a, int b); bool cmp(Type t1, Type t2);
名字空间用小写字母命名,并基于项目名称和目录结构:
namespace google_awesome_project { ... }
枚举值应该优先采用常量的命名方式。
enum UrlTableErrors { kOK = 0, kErrorOutOfMemory, kErrorMalformedInput, };
尽量避免使用宏,如果不得不用,请使用大写字母及下划线。
#define ROUND(x) ... #define PI_ROUNDED 3.0
相关文章推荐
- Google C++编程风格指南(一)
- Google C++编程风格指南(二):作用域
- Google C++Style Guide【C++编程风格指南解读】——Windows代码规则
- [译]Google C++编程风格指南(二)
- Google C++编程风格指南
- Google C++编程风格指南
- Google C++编程风格指南(二)
- Google C++编程风格指南(三):C++ 类
- Google C++编程风格指南(二)
- [译]Google C++编程风格指南(三)
- (转)[译]Google C++编程风格指南(二)
- Google C++编程风格指南
- Google C++编程风格指南(三)
- Google C++编程风格指南(四):智能指针和其他C++特性
- Google C++编程风格指南(一):头文件
- Google C++Style Guide【C++编程风格指南解读】——头文件
- google C++编程风格指南之头文件的包含顺序
- [译]Google C++编程风格指南(四)
- Google C++编程风格指南(一)之头文件的相关规范
- Google C++编程风格指南(三)之作用域的相关规范