Java 條件式主要有 if-else 以及 switch 2種,撰寫條件式有一些原則可以參考。
 
1.通用性原則:

    1.條件式的判斷邏輯順序可以依照 “正常流程 or 重要性 > 執行頻率 > 字母或數字順序” 來排列。

e.g. 判斷英文字母或是數字,因為2者都是屬於正常流程,重要性也相同,但英文字母的執行頻率比數字高,

因此應該把英文字母的判斷放在上方。

private void isNumberOrLetter(char source)
{
        if (source == 'a' || source == 'b' || source == 'c' ...) {
        } else if (source == '1' || source == '2' ...) {
        }
}

    2.switch用於簡單的條件判斷,if-else用於複雜的條件判斷。

    3.若執行區塊的複雜度高,可以使用 “重構:提取函式” 來提取複雜度高的區塊。

    4.if-then-else 最後一個 else 和 switch 的 default 必須注意不包含的條件,可以使用 assert 或 throw new illegalArgumentException 來處理。

    5.為了提高可讀性,判斷邏輯的寫法可以依照數軸來寫。e.g.

    判斷 i 是否在 min 和 max之間 → min <= i && i <= max

if(0 <= i && i <= 10)

判斷 i是否在 min 和 max 之外 → i < min or i > max

if(i < 0 || i >10)

判斷 i 應該小於或大於某個值 → i < min  or  i > max 。 ref to: The art of readable code

if(i < 0)
if(i > 10)

 


2. If-else:

    1.不要寫空的if,可以反轉if判斷條件並把原本對應else的動作放到if中。e.g.

if(condition){
}else{
//do else action
}

改為

if(!condition){
//do else action
}

    2.判斷條件多且複雜時,可使用 “重構分解條件式”。e.g.

if(color == green && color == red){
}else if(color == red && color == black){
}else if(color == black && color == green){
}

改為

if(isGreenAndRed(color)){
}else if(isRedAndBlack(color)){
}else if(isBlackAndGreen(color)){
}

    3.分解巢狀條件式,可以使用 “重構-以衛述句取代巢狀條件式” 。


3. Switch:
    1.不要摻雜多個case,每個case都應該使用break跳出。