4 - 縮進

4 - 縮進

推薦使用4個空格作爲縮進單位。
關於使用空格或者tab並無決定性的要求。tab須要設置爲8個空格而不是4個。java

Q: 換行縮進 區別
A: 代碼嵌套、內部須要縮進。好比方法的實現和if的內部,以下:
if (boolenArg) {
    doSomething(); //這叫縮進 4個空格
}

var longName1 = longName2 + longName3 + longName4 + longName5
               + longName6;  //這叫換行 太長了換了第二行

4.1 行長

避免超過80個字符的行,由於不少終端和工具不能很好的處理它們。函數

Note: 註釋中使用的示例應該具備較短的行長, 通常不超過 70個字符

4.2 換行規則

當一個表達式不適合單獨一行時,根據如下通常原則將它分解:工具

  • 逗號以後
  • 操做符前面
  • 優選在高級別的運算後面換行
  • 將新行與上一行中相同級別的表達式的開頭對齊。好比()[]
  • 若是上述規則致使代碼混淆或超過右邊的邊界,則只需縮進8個空格便可。

參考案例:code

someMethod(longExpression1, longExpression2, longExpression3,
        longExpression4, longExpression5); // 逗號後面  8個空格
        
var = someMethod1(longExpression1,
                someMethod2(longExpression2,
                        longExpiression3)); // 16個空格,由於是方法內部的函數

下面是2個算術運算的換行例子。第一個是優選的,由於它換行是在高級別的運算外面。it

longName1 = longName2 * (longName3 + longName4 - longName5)
           + 4 * longName6; //優選 操做符前面

longName1 = longName2 * (longName3 + longName4
                      - longName5) + 4 * longName6; //避免

下面是2個縮進方法聲明的示例。第一個是常規換行。第二個例子中若是按照常規換行會太
緊貼右邊,因此只前置了8個空格。io

//常規換行 括號對齊
someMethod(int anArg, Object anotherArg, String yetAnotherArg,
           Object andStillAnother) {
    //do something               
}

// 縮進8個空格 避免很長的縮進.
// 這種狀況,若是也使用括號對齊的話,右邊都沒辦法寫代碼了
private static synchronized horkingLongMethodName (int anArg,
        Object anotherArg, String yetAnotherArg,
        Object andStillAnother) {
    // do something            
}

if 表達式的換行應該使用8個空格,由於4個空格會讓表達式的內部的代碼很不容易區分,例如:class

// 不要使用這種縮進
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;
相關文章
相關標籤/搜索