7. 格式
(1) 每一行代码字符数尽量不要超过 80
(2) 避免产生超过 3000 行的超大文件
(3) 使用空格缩进,不要使用制表符,且每级缩进为 2 个空格
(4) 相对独立的程序块之间建议添加空行
(5) 返回类型和函数名在同一行,参数也尽量放在同一行,如果放不下就对形参分行
ReturnType ClassName::ReallyLongFunctionName(Type par_name1, Type par_name2, Type par_name3){
DoSomething(); ...
}
或者:
ReturnType ClassName::ReallyLongFunctionName(Type par_name1,
Type par_name2,
Type par_name3){
DoSomething(); ...
}
(6) if、for、do、while、switch、case、default等语句与{在同一行,而}独占一行
if (condition) { //圆括号里没有空格,左大括号紧随其后
... // 2 空格缩进
}
else if (...) { // else 与 if 的右大括号同一行
...
} else {
...
} // 右大括号独占一行
if (x == kFoo)
return new Foo(); // 简短的条件语句允许写在同一行,且省略大括号
switch (var) {
case 0: { // 2 空格缩进
... // 4 空格缩进
break;
}
case 1: {
...
break;
}
default: {
...
}
}
(7) ->、.、指针/地址操作符*与&前后不加空格
x = *p;
p = &x;
x = r.y;
x = r->y;
(8) 在声明指针变量或参数时,建议*与&紧挨变量名
// 空格前置,建议统一为此种
char *c;
const string &str;// 空格后置,也可以
char* c;const string& str;
(9) 一个表达式换行时,操作符总位于行尾
if (this_one_thing > this_other_thing &&
a_third_thing == a_fourth_thing &&
yet_another && last_one) {
...
}
(10) 不要在return表达式里加上非必须的括号
return result; // 没有圆括号
return (result); // 差 —— 圆括号没有实际意义
return (some_long_condition && another_condition); // 用圆括号改善可读性
(11) 预处理指令不要缩进,从行首开始
if (lopsided_score) {
# if DISASTER_PENDING // 好 —— 指令从行首开始,且 # 与 if 之间没有空格
DropEverything();
# endif
BackToNormal();
}