摘抄精简Google 开源项目风格指南:
http://zh-google-styleguide.readthedocs.org/en/latest/contents/
一. 命名规则
永远不要使用单词缩写(如count写成cnt)变量名:
小写字母,下划线连接,一般用名词,如error_count
类的成员变量以下划线结尾,如my_exciting_member_variable_
结构体的数据变量,小写字母,下划线连接
全局变量,前缀g_ ,如g_global_variable
常量:
加前缀k,如kDaysInAWeek
类型名:每个单词大写首字母,不含下划线,如MyClass
函数名:
常规函数:每个单词首字母大写,没有下划线 DeleteElement()
取值或设值函数:与存取的变量名匹配(如取得成员变量的值)
如
void set_num_entries(int num_entries) {
num_entries_ = num_entries;
}
宏命名: 全大写,下划线连接
枚举:使用常量或宏命名方式
文件命名:全部小写,可以用下划线(_)或中线(-)连接
my_useful_class.cpp (推荐)
my-useful-class.cpp
myusefulcalss.cpp
二. 注释
风格:// /**/ 要统一,只使用一种
文件注释:版权声明,许可证,作者标识
文件内容注释:
.h 文件对声明的类的 功能和用法做简单说明
.c 文件对 实现细节或算法技巧 简单描述
类注释:
每个类的定义都要附带一份注释,描述类的功能和用法
函数注释:
函数声明:描述函数功能和用法,此处不会描述函数如何工作* 函数的输入输出
* 参数是否可以为NULL
* 描述函数对空间的分配和释放
* 是否存在性能隐患
函数定义:描述函数功能和实现要点
如,编程技巧、大致实现步骤、为何如此实现
普通变量:其本身足以说明用途,不需注释
全局变量:必须注释含义及用途
类数据成员:必须说明用途,如变量可接受NULL或-1等警戒值,必须说明
实现注释:
代码前注释:对巧妙或复杂的代码段前注释
行注释:在行尾空2格注释 (如果连续多行注释,应对齐)
传入参数注释:对传入的NULL,bool,整数等说明含义(或者使用常量使望文生义)
三. 格式
函数声明和定义:函数类型和函数名必须同一行;
函数名和左圆括号之间无空格;
圆括号和参数之间无空格;
左大括号在函数最后一个参数同一行的末尾处;
右大括号单独一行
int functions(double x, double y) {
return x+y;
}
函数返回值:
return表达式不用圆括号,
return x; // not return(x);
条件/循环语句:
* if 和左圆括号之间有个空格,右圆括号与左大括号之间有个空格
* else 和 if 的 右大括号同一行
if (condition) {
} else {
}
* 简短并且没有else的条件语句可写在同一行
if (i == 0) return NULL;
* 单行不需要大括号
指针和引用表达式:
句点或箭头前后不要有空格. 指针/地址操作符 (*, &) 之后不能有空格.预处理指令:
所有都从行首开始,无缩进,即使处于缩进代码块中
// Good - directives at beginning of line
if (lopsided_score) {
#if DISASTER_PENDING // Correct -- Starts at beginning of line
DropEverything();
#endif
BackToNormal();
}
类格式:
声明顺序public, protected, private 从行首缩进一个空格