DIY主題討論5:條件控制

如何解決if-else多層嵌套的問題?

  1. 使用策略模式,if-else中執行的邏輯可以理解爲策略,可以將策略方法抽離成接口與實現,然後通過工廠類創建對象實現策略邏輯,這樣可以是解決邏輯比較清晰,後期維護增加修改策略也吧比較方便。
  2. 使用狀態模式,if-else的設計思想是當什麼條件下做什麼事情,而狀態模式則是將不同的操作與不同的狀態值對應,通過設置狀態值來控制邏輯的執行。此處還可以拓展使用二進制位運算,用二進制的每一位代表一種操作,節約空間提升效率。
  3. 使用多態通過傳遞不同的參數類型去掉if-else
  4. 接口分層,根據職責內聚,拆分方法與層次調用減少if-else層級,控制嵌套深度。
  5. 衛語句,本質也是把多層if-else抽離成帶有含義的語句,一方面減少層次,另一方面是判斷邏輯一目瞭然。
  6. 解決邏輯:理清每個if的判斷條件,執行邏輯拆分(拆分成不同策略或者不同狀態對應的執行方法)。(降嵌套層次——>消嵌套層析,難理解——>易理解)

switch有哪些奇葩的脾氣?

  1. case後面必須是常量,case如果僅選擇一條結果,則需要與break配合使用。
  2. 最後用default 關鍵字定義默認方法。
  3. switch比較字符串實際上是比較字符串的hashcode,對於其他類型可考慮用hashcode進行switch分支判斷。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章