switch case,一個糟糕的設計!!!
- 2019 年 11 月 26 日
- 筆記
1 什麼時候需要使用switch case?
說到switch case我們通常都會想到 if else,相較於if else支援任何數據類型、表達式和變數,而switch case只是支援short、byte、char、int、String和枚舉。因為switch case內部邏輯控制清晰的原因,當業務判斷超過三個以上,我們比較建議使用switch case。
2 switch case特性
case後面只能跟一個普通字元,語義跟一個普通標籤沒什麼區別,因為具有fall through特性(如下圖所示)

3 fall through弊端
switch case設計之初的目的是便於編譯器設計和優化,以及能夠滿足一些特殊的使用場景,但是平時很難碰到這種場景,通常程式設計師在寫程式碼的過程中,大多藉助break或者return的幫忙,以保持程式碼邏輯結構清晰性,此情況下,若使用fall through特性反而可能會破壞掉這種局部的結構性。
對於簡單的控制邏輯還行,有時case的具體業務邏輯中可能存在for循環之類邏輯,這個時候即使在for循環寫了break,但是對於整個swtich case來說沒什麼影響。,如果此時你沒有靈活使用break或者return ,從此將埋下不定時炸彈,在意向不到的地方引爆。
4 總結
switch case和if else並不等價,使用switch case要注意配合break和return使用。
添加關注第一時間收到通知
原創不易,如果覺得有用,可以隨手轉發或者」在看「