9.8. 条件语句
总述
倾向于不在圆括号内使用空格. 关键字 if
和 else
另起一行.
说明
对基本条件语句有两种可以接受的格式. 一种在圆括号和条件之间有空格, 另一种没有.
最常见的是没有空格的格式. 哪一种都可以, 最重要的是 保持一致. 如果你是在修改一个文件, 参考当前已有格式. 如果是写新的代码, 参考目录下或项目中其它文件. 还在犹豫的话, 就不要加空格了.
- if (condition) { // 圆括号里没有空格.
- ... // 2 空格缩进.
- } else if (...) { // else 与 if 的右括号同一行.
- ...
- } else {
- ...
- }
如果你更喜欢在圆括号内部加空格:
- if ( condition ) { // 圆括号与空格紧邻 - 不常见
- ... // 2 空格缩进.
- } else { // else 与 if 的右括号同一行.
- ...
- }
注意所有情况下 if
和左圆括号间都有个空格. 右圆括号和左大括号之间也要有个空格:
- if(condition) // 差 - IF 后面没空格.
- if (condition){ // 差 - { 前面没空格.
- if(condition){ // 变本加厉地差.
- if (condition) { // 好 - IF 和 { 都与空格紧邻.
如果能增强可读性, 简短的条件语句允许写在同一行. 只有当语句简单并且没有使用 else
子句时使用:
- if (x == kFoo) return new Foo();
- if (x == kBar) return new Bar();
如果语句有 else
分支则不允许:
- // 不允许 - 当有 ELSE 分支时 IF 块却写在同一行
- if (x) DoThis();
- else DoThat();
通常, 单行语句不需要使用大括号, 如果你喜欢用也没问题; 复杂的条件或循环语句用大括号可读性会更好. 也有一些项目要求 if
必须总是使用大括号:
- if (condition)
- DoSomething(); // 2 空格缩进.
- if (condition) {
- DoSomething(); // 2 空格缩进.
- }
但如果语句中某个 if-else
分支使用了大括号的话, 其它分支也必须使用:
- // 不可以这样子 - IF 有大括号 ELSE 却没有.
- if (condition) {
- foo;
- } else
- bar;
- // 不可以这样子 - ELSE 有大括号 IF 却没有.
- if (condition)
- foo;
- else {
- bar;
- }
- // 只要其中一个分支用了大括号, 两个分支都要用上大括号.
- if (condition) {
- foo;
- } else {
- bar;
- }