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;