日期:2010-10-13  浏览次数:20439 次

3.6 换行

当一个表达式无法容纳在一行内时,可以依据如下一般规则断开之:

- 在一个逗号后面断开
- 在一个操作符前面断开


- 宁可选择较高级别(higher-level)的断开,而非较低级别(lower-level)的断开
- 新的一行应该与上一行同一级别表达式的开头处对齐
- 如果以上规则导致你的代码混乱或者使你的代码都堆挤在右边,那就代之以缩进8个空格。

以下是断开方法调用的一些例子:


someMethod(longExpression1, longExpression2, longExpression3,
             longExpression4, longExpression5);

$var = someMethod1(longExpression1,
                 someMethod2(longExpression2,
                              longExpression3));

以下是两个断开算术表达式的例子。前者更好,因为断开处位于括号表达式的外边,这是个较高级别的断开。


$longName1 = $longName2 * ($longName3 + $longName4 - $longName5)
            + 4 * $longname6; //使用这种缩进方式

$longName1 = $longName2 * ($longName3 + $longName4
                   - $longName5) + 4 * $longname6; //避免这种

以下是两个缩进方法声明的例子。前者是常规情形。后者若使用常规的缩进方式将会使第二行和第三行移得很靠右,所以代之以缩进8个空格


//传统的缩进方式
function someMethod($anArg, $anotherArg, $yetAnotherArg,
          $andStillAnother) {
...
}

//利用8个连续空格避免过渡的缩进
function horkingLongMethodName($anArg,
     $anotherArg, $yetAnotherArg,
     $andStillAnother) {
...
}

if语句的换行通常使用8个空格的规则,因为常规缩进(4个空格)会使语句体看起来比较费劲。比如:


//不要使用这种缩进方式
if ((condition1 && condition2)
  || (condition3 && condition4)
  ||!(condition5 && condition6)) { //错误的换行方式,没有进行缩进
  doSomethingAboutIt(); //条件与此句对齐,造成阅读程序时很可能漏过此句
}

//应该使用这种缩进方式
if ((condition1 && condition2)
    || (condition3 && condition4)
    ||!(condition5 && condition6)) {
  doSomethingAboutIt();
}

//或者这样的缩进方式也可以
if ((condition1 && condition2) || (condition3 && condition4)
        ||!(condition5 && condition6)) {
  doSomethingAboutIt();
}

这里有三种可行的方法用于处理三元运算表达式:

$alpha = (aLongBooleanExpression) ? beta : gamma;

$alpha = (aLongBooleanExpression) ? beta
                 : gamma;

$alpha = (aLongBooleanExpression)
    ? beta
    : gamma;