Google C++代码风格指南翻译简化版(google c++ code style guide)【七】

Google 编程规范本地化、简化。如有需要,可参考 Google C++ code style guide原文:
http://google.github.io/styleguide/cppguide.html

本文档基于网上流传的 Google C++编程风格指南,由 edisonpeng(2009/3/25)整理

本地化简化由MISAS开发团队使用。在此分享以供各开发团队参考。

目录

@[toc]

格式化

MISAS开发团队的C++开发规范约定,1个Tab=4个空格

行长度

每一行字符数不超过80

这一条存在例外情况:

(1)如果一行注释包含了超过80字符的命令或URL,出于复制粘贴方便可以超过80字符;

(2)包含长路径的可以超过80列,尽量避免

(3)头文件保护可以无视该原则

非ASCII字符

尽量不使用ASCII字符,使用时必须使用UTF-8格式

空格 or 制表符Tab

只使用Tab,约定Tab长度为4个空格

函数声明与定义

返回类型和函数名在同一行,参数也在同一行。

如果一行文本较多写不下所有参数,则参数换行Tab对齐:

ReturnType LongClassName::ReallyReallyReallyLongFunctionName(
    Type par_name1,
    Type par_name2,
    Type par_name3) 
{
    DoSomething(); // 2 space indent
    ...
}

注意:
(1)返回值和函数在同一行

(2)左圆括号(总是和函数名在同一行

(3)函数名和左圆括号之间没有空格

(4)圆括号与参数没有空格

(5)函数的左花括号另起一行,单独置于一行

(6)函数的右花括号在函数最后,单独置于一行

(7)右圆括号和左花括号间换行

(8)函数声明和实现处的所有形参名称必须保持一致

(9)所有形参尽可能对齐

(10)默认缩进为1个Tab,即4个空格

(11)独立封装的参数保持4个空格缩进

const函数,关键字const和最后一个参数置于同一行

ReturnType LongClassName::ReallyReallyReallyLongFunctionName(
    Type par_name1,
    Type par_name2,
    Type par_name3) const
{
    DoSomething(); // 2 space indent
    ...
}

用不到的参数需在函数的注释中说明

函数调用

尽量放在同一行,否则将括号内的参数换行对齐

条件语句

条件语句的左花括号放在条件语句的行位,格式上与函数区分

注意:条件内哪怕只有一行语句,也要写全花括号,方便后续运维。

有些条件语句写在一行可以增强可读性,仅当语句简单且没有else子句时可以使用:

if (x == kFoo) return new Foo();
if (x == kBar) return new Bar();

注意:如果有else子句,则禁止不带花括号。

循环和开关选择语句(loop and switch)

switch 语句尽量使用大括号分块

switch 语句必须要有default存在,如正常不会执行则以异常日志或控制台信息的方式处理。

空循环使用{}或者continue,禁止循环只用一个分号

指针和引用表达式

句点(.)、箭头(->)前后不要有空格,指针(*)、地址操作符(&)后不要有空格

value = *test;
value = &test;
value = c.test;
value = c->test;

char *cinput;
const string &str_name;

布尔表达式

如果布尔表达式超过标准行宽(80字符),则断行且要求逻辑操作符置于行尾。

if (this_one_thing > this_other_thing    &&
    a_third_thing == a_fourth_thing     &&
    yet_another & last_one) {
    ...
}

有多个逻辑操作符时,考虑使用圆括号()提示运算优先级

返回值

函数返回(即:return 表达式)时不要使用圆括号。

初始化操作

使用等号(=)完成

预处理

不要缩进,从行首开始。及时在缩进代码块中,也要从行首开始。

类格式

类格式参考本规范第三篇声明次序章节。

初始化列表

初始化列表置于同一行,或换行Tab补齐

命名空间格式化

命名空间内容不缩进。

水平空白

行尾不要增加无意义的空白。当行尾有注释需要Tab补齐时可以适当留空。

垂直空白

垂直空白尽量少。函数之间、模块之间留一样空白

规则之例外

前文提到的编码习惯基本是强制性的,但优秀的规则都允许例外。

现有不统一代码

现有成熟的工程不符合既定规范可以网开一面,2018年起自主开发的工程后续逐步修正。

Windows代码

在Windows平台开发,除系统API不能更改外,自主开发内容需遵循本规则。

团队合作

团队风格一致性,代码高可读性。

版权声明

弈心博客


本文首发site_name,转载请附上博文链接!