《Google的C++编码规范》阅读随笔 —— 第七章 格式

1.行长度
每一行代码字符数不超过80
结论:80个字符是最大值。例外:
1)如果一行注释包含了超过80个字符的,命令或者URL,出于复制粘贴的方便可以超过80个
2)头文件保护

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

3.空格还是制表位
只使用空格,每次缩进2个空格
可以设定编辑器将tab转为空格

4.函数声明与定义
返回类型和函数名在同一行,合适的话,参数也放在同一行
以下几点:
1)返回值和函数名总是在同一行
2)左圆括号总是核函数名在同一行
3)函数名和左圆括号间没有空格
4)圆括号和参数间没有空格
5)左大括号总是在最后一个参数同一行的末尾处
6)右大括号总是单独位于函数最后一行
7)右圆括号和左大括号之间总是有一个空格
8)函数声明和实现处的所有形参名称必须保持一致
9)所有形参应该尽可能对齐
10)缺省缩进为2个空格
11)独立封装的参数保持4个空格的缩进

5.函数调用
尽量放在同一行,否则,将实参封装在圆括号中。
同一行放不下,可断为多行,后面每一行都和第一个实参对齐,左圆括号和右圆括号前不要留空格:
bool retval = DoSomething(argument1,
argument2,
argument3);

or

if{
if{
DoSomethingThatRequiresALongFunctionName(
very_long_argumrnt1,
argument2,
argument3
);
}
}

6.条件语句
更提倡不在圆括号中添加空格,关键字else另起一行。
圆括号和大括号最好空一格
if(condition) {...

有些语句放在一行,增强可读性
if(x) DoThis();

通常单行语句不要使用大括号

7.循环和开关选择语句
switch语句可以使用大括号分块;空循环提应使用{}或continue,不要只是一个建立单的分号。
switch语句中的case块可以使用大括号也可以不用,如果输入的值没有case去处理,编译器将会报警,因此添加default,若default永不会执行,可以简单地使用assert:
default:{
assert(false); //assert判断为假中断程序执行
}

8.指针和引用表达式
句点(.)或箭头(->)前后不要有空格,指针/地址操作符(*, &)后不要有空格

9.布尔表达式
如果一个布尔表达式超过标准行宽(80字符),如果断行要统一

10.函数返回值
return表达式中不要使用圆括号

11.变量及数组初始化
选择=还是()。都可以

12.预处理指令
预处理指令不要缩进,从行首开始(即使预处理指令在缩进的代码块中)
if(condition){

if DISASTER_PENDING

    ...

endif

    ...
}

13.类格式
声明属性依次是public、protected、private。每次缩进一个空格。
class MyClass{
public:
...
}
注意:
1)所有基类名应在80列限制下尽量与子类名放在同一行
2)关键词public 。。。 要缩进1个空格(MSVC所使用tab缩进,且这三个关键词不缩进)
3)除了第一个关键词之外,其他关键词前空一行。类小的话可以不空
4)这些关键词之后不要空行

14.初始化列表
构造函数初始化列表放在同一行或按四格缩进并排几行
MyClass::MyClass(int var):some_var_(var), some_other_var_(var + 1){
或者
MyClass::MyClass(int var)
:some_var_(var),
some_other_var_(var + 1){

15.命名空间格式化
命名空间内容不要缩进。
namespace{
void foo() {

}

}

16.水平空白
水平空白的使用因地制宜,不要在行尾提那家无谓的空白

17.垂直空白
垂直空白越少越好

总结:
1)行宽原则上不超过80列
2)尽量不要使用ASCII字符,要用的话,参考UTF-8格式,尤其在linux、unix下。尽量不要将字符串常量耦合到代码中,比如可以独立出资源文件
3)UNIX/Linux无条件使用空格,MSVC的话使用tab也无可厚非
4)函数参数,逻辑条件、初始化列表:要么所有参数和函数名放在同一行,要么所有参数并排分行
5)除函数定义的左大括号可以置于行首外,包括函数、类、结构体、枚举声明。各种语句的左大括号置于行尾,所有右大括号独立成行
6).or->操作符前后不留空,*or&不要前后都留空,一个就可,靠左靠右依个人爱好
7)预处理和命名空间不要使用额外缩进,类、结构体、枚举。函数。语句使用缩进
8)初始化=还是()都可以
9)return不要加()
10)水平,垂直留白不要滥用,怎么易读怎么来

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,063评论 6 510
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,805评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,403评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,110评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,130评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,877评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,533评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,429评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,947评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,078评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,204评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,894评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,546评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,086评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,195评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,519评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,198评论 2 357

推荐阅读更多精彩内容