C/C++编写规范之格式-(2)

C/C++编写规范之格式(续)

C/C++编写规范之格式-(2)

6.条件语句

 不在圆括号中添加空格,关键字 else 另起一行。if (condition) { // no spaces inside parentheses ... // 2 space indent.} else { // The else goes on the same line as the closing brace. ...}

if和左圆括号间有个空格,右圆括号和左大括号(如果使用的话)间也要有个空格:

if(condition) // Bad - space missing after IF.if (condition){ // Bad - space missing before {.if(condition){ // Doubly bad.if (condition) { // Good - proper space after IF and before {.

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

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

如果语句有 else 分支是不允许的:

// Not allowed - IF statement on one line when there is an ELSE clauseif (x) DoThis();else DoThat();

通常,单行语句不需要使用大括号,如果你喜欢也无可厚非,也有人要求 if 必须使用大括号:

if (condition) DoSomething(); // 2 space indent.if (condition) { DoSomething(); // 2 space indent.}

但如果语句中哪一分支使用了大括号的话,其他部分也必须使用:

// Not allowed - curly on IF but not ELSEif (condition) { foo;} else bar;// Not allowed - curly on ELSE but not IFif (condition) foo;else { bar;}// Curly braces around both IF and ELSE required because// one of the clauses used braces.if (condition) { foo;} else { bar;}
C/C++编写规范之格式-(2)

7.循环和开关选择语句

switch 语句可以使用大括号分块;空循环体应使用{}或 continue。

switch 语句中的 case 块可以使用大括号也可以不用,取决于你的喜好,使用时要依下文所述。

如果有不满足 case 枚举条件的值,要总是包含一个 default(如果有输入值没有 case 去处理,编译器将报警)。如果 default 永不会执行,可以简单的使用 assert:

switch (var) { case 0: { // 2 space indent ... // 4 space indent break; } case 1: { ... break; } default: { assert(false); }}

空循环体应使用{}或 continue,而不是一个简单的分号:

while (condition) { // Repeat test until it returns false.}for (int i = 0; i < kSomeNumber; ++i) {} // Good - empty body.while (condition) continue; // Good - continue indicates no logic.while (condition); // Bad - looks like part of do/while loop.
C/C++编写规范之格式-(2)

8.指针和引用表达式

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

下面是指针和引用表达式的正确范例:

x = *p;p = &x;x = r.y;x = r->y;

注意:\

1) 在访问成员时,句点或箭头前后没有空格;

2) 指针操作符*或\&后没有空格。

在声明指针变量或参数时,星号与类型或变量名紧挨都可以:

// These are fine, space preceding.char *c;const string &str;// These are fine, space following.char* c; // but remember to do "char* c, *d, *e, ...;"!const string& str;char * c; // Bad - spaces on both sides of *const string & str; // Bad - spaces on both sides of &

同一个文件(新建或现有)中起码要保持一致。

 

C/C++编写规范之格式-(2)

9.布尔表达式

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

下例中,逻辑与(\&\&)操作符总位于行尾:

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

两个逻辑与(&&)操作符都位于行尾,可以考虑额外插入圆括号,合理使用的话对增强可读性是很有帮助的。

 

10.函数返回值

return 表达式中不要使用圆括号。

函数返回时不要使用圆括号:

return x; // not return(x);
C/C++编写规范之格式-(2)

11.变量及数组初始化

选择=还是()。

需要做二者之间做出选择,下面的形式都是正确的:

int x = 3;int x(3);string name("Some Name");string name = "Some Name";
C/C++编写规范之格式-(2)

12.预处理指令

预处理指令不要缩进,从行首开始。

即使预处理指令位于缩进代码块中,指令也应从行首开始。

// Good - directives at beginning of line if (lopsided_score) {#if DISASTER_PENDING // Correct -- Starts at beginning of line DropEverything();#endif BackToNormal(); }// Bad - indented directives if (lopsided_score) { #if DISASTER_PENDING // Wrong! The "#if" should be at beginning ofline DropEverything(); #endif // Wrong! Do not indent "#endif" BackToNormal();}
C/C++编写规范之格式-(2)

C/C++学习路线(收藏)

1、c语言入门 程序设计-算法-运算符-顺序 分支 循环结构。

2、C语言精通 数组-函数字串符-指针-构造类型-预处理-存储管理-文件操作-数据结构。

3、c++入门 面对对象编程-类和对象-运算符重载-派生于继承,异常处理技术-C++语言标准-数据结构-(双向链表-双向队列-树-图)。

4、c++精通-stl标准模板库(容器-迭代器-算法)正则表达式-boost标准模板库-socket网络编程-大型企业项目实战:-员工信息管理系统-推箱子-俄罗斯方块-服务器-播放器-人工智能。

5、windows高级工程师:win32/mfc-windows高级编程-QT框架编程-大型企业级项目实战项目(人脸识别-车牌识别-局域网远程监控-等项目)

6、linux系统应用程序开发-linux内核构架研究-linux顶级网络服务器开发及搭建。

7、大型企业项目实战(linux内核高级虚拟内存驱动设计-linux网络间谍系统软件-linux内核网络数据劫持-linux网络阅读系统开发

C/C++编写规范之格式-(2)

文章最后

怎么快速学C/C++,有什么方法,打算深入了解这个行业的朋友,可以加C/C++学习群:750+579+336,不管你是小白还是大牛,小编我都欢迎,不定期分享干货,包括小编自己整理的一份2018最新的C/C++资料和0基础入门教程,欢迎初学和进阶中的小伙伴。

每天晚上20:00我都会开直播给大家分享C/C++游戏编程学习知识和路线方法,群里会不定期更新最新的教程和学习方法,大家都是学习C/C++的,或是转行,或是大学生,还有工作中想提升自己能力的前端党,如果你是正在学习C/C++的小伙伴可以加入学习。最后祝所有程序员都能够走上人生巅峰,让代码将梦想照进现实,非常适合新手学习,有不懂的问题可以随时问我,工作不忙的时候希望可以给大家解惑。

C/C++编写规范之格式-(2)

喜欢小编的文章的朋友可以关注、收藏、转发、留言,阅读愉快!!!


分享到:


相關文章: