PHP 編碼規范(5)

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;

發佈留言