Google C++代码规范:格式规范
作者:
| 更新日期:好的规范还是需要学习一下。
本文首发于公众号:天空的代码世界,微信号:tiankonguse
一、背景
上篇文章介绍了 Google C++ 代码规范的《头文件规范》和《命名规范》。
第三篇就来介绍一下最重要的格式规范。
## 二、格式规范
每个人都可能有自己的代码风格(style)和格式(formatting)。
但如果一个项目中的所有人都遵循同一风格的话,这个项目就能更顺利地进行。
每个人未必能同意下述的每一处格式规则,而且其中的不少规则需要一定时间的适应。
但整个项目服从统一的编程风格是很重要的,只有这样才能让所有人轻松地阅读和理解代码。
三、行长度
每一行代码最大字符数为 80。
下面 5 种情况允许一行超过 80 个字符。
-)不能换行的注释,比如含有命令 或者 url
-)明文字符串
-)include 语句
-)头文件保护语句
-)using 语句
四、非 ASCII 字符
尽量不使用非 ASCII 字符,使用时必须使用 UTF-8 编码。
非 ASCII 字符(中文等)只能用于注释当中,含有中文注释的代码文件必须使用 UTF-8 编码保存,不能有BOM头。
五、空格还是制表位
只使用空格,每次缩进 2 个空格。
不要在代码中使用制表符。你应该设置编辑器将制表符转为空格。
六、函数调用
允许3种格式,在一行内写完函数调用,在圆括号里对参数分行,或者参数另起一行且缩进四格。
原则上,尽可能精简行数,比如把多个参数适当地放在同一行里。
七、函数声明与定义
返回类型和函数名在同一行,参数也尽量放在同一行.
如果放不下就对形参分行,分行方式与函数调用 一致。
即第一个参数与函数名同行,换行的参数与第一个参数对齐;或者使用 4 个空格缩进来对齐。
注意实现:
-)左圆括号总是和函数名在同一行。
-)函数名和左圆括号间永远没有空格。
-)圆括号与参数间没有空格。
-)左大括号总在最后一个参数同一行的末尾处,不另起新行。
-)右大括号总是单独位于函数最后一行,或者与左大括号同一行。
-)右圆括号和左大括号间总是有一个空格。
八、条件语句
if 和左圆括号间都要有个空格。右圆括号和左大括号之间也要有个空格。
任何是否都需要加大括号。
if (condition) { // 圆括号里没有空格
... // 2 空格缩进
} else if (...) { // else 与 if 的右括号同一行
...
} else {
...
}
九、循环和开关
switch 语句可以使用大括号分段,以表明 cases 之间不是连在一起的。
switch 应该总是包含一个 default匹配,如果default 永远执行不到,简单的使用 assert语句。
switch (var) {
case 0: { // 2 空格缩进
... // 4 空格缩进
break;
}
case 1: {
...
break;
}
default: {
assert(false);
}
}
对于循环,左括号左边需要有空格,右括号右边也需要有空格。
for (int i = 0; i < kSomeNumber; ++i) {
printf("I take it back\n");
}
while (condition) {
// Repeat test until it returns false.
}
十、指针和引用
.
点和->
箭头前后不要有空格。
*
取值和&
取址之后不能有空格。
声明指针和引用时,空格靠左靠右都可以。
x = *p;
p = &x;
x = r.y;
x = r->y;
// 好, 空格后置.
char* c;
const string& str;
十一、布尔表达式
如果一个布尔表达式超过标准行宽,断行方式要统一。
比如,逻辑操作符要么都在行尾,要么都在行首。
PS:Google 常见的格式是所有操作符放在行尾。
if (this_one_thing > this_other_thing &&
a_third_thing == a_fourth_thing &&
yet_another && last_one) {
...
}
十二、空格与换行
-)永远不要在行尾添加没意义的留白。
-)左大括号前总是有空格
-)分号前不加空格
-)列表初始化中大括号内的空格是可选的,但要保持一致。
-)if else while for wtitch case 关键字都会有一个空格。
-)赋值左右都有空格
-)二元操作符左右都有空格,复杂的可以适当不加空格。
-)一元操作数与参数之间不需要加空格。
-)模板尖括号前后不需要加空格
-)一般首尾不要留空行,空行不能超过两行。
十三、其他
返回值:不要在 return 表达式里加上非必须的圆括号。
命名空间:不缩进。
预处理指令:不要缩进,从行首开始。
类格式:
-)public 放在最前面,然后是 protected,最后是 private。
-)关键词 public:, protected:, private: 要缩进 1 个空格。
-)除第一个关键词外,其他关键词前要空一行。
-)关键词后不要保留空行。
十四、最后
至此,两个最重要的《命名规范》与《格式规范》我们就学完了。
命名规范的知识量相对小一些,格式规范则不一样,需要注意的点特别多。
目前看对于换行,我的代码风格没啥问题。
而关键字与操作符前后的空格,我的就不规范了,一不小心就写的密密麻麻。
适当加上空格后,代码看起来也会清晰一些吧。
《完》
-EOF-
本文公众号:天空的代码世界
个人微信号:tiankonguse
公众号ID:tiankonguse-code
本文首发于公众号:天空的代码世界,微信号:tiankonguse
如果你想留言,可以在微信里面关注公众号进行留言。