關於消除if-else的簡單總結


         if-else是計算機語言中基本的分支語句,雖然很簡單,但可能會出現濫用的情況,如圖:

         這種標記判斷,嵌套成這樣(其實沒有必要嵌套),會讓別人覺得作者水平很低。

         可以看出,這些if僅僅是在判斷一個變量,根據這個變量的值,返回不同的文字信息。

         用switch也不是很好,那樣雖然理解起來容易一些,但仍然需要編寫很長很長的代碼。

         接下來小菜就總結幾點消除if-else的小技巧。

 

1.將對應關系保存在數據庫中,作為字典。

        

         截圖中的例子,無非就是一個對應關系,把指定的數字翻譯成文字信息。

         這很像我們常用的字典,我們只需要把數字和文字信息存入數據庫,然后通過數字查詢文字信息即可。

         這樣一來,翻譯工作僅需一條簡單的sql語句就能完成,完全不需要這樣寫這么多冗余代碼。

         缺點是這樣可能會造成數據庫頻繁訪問。

 

2.巧用map

 

         大家都知道,map是一個鍵值對結構,拿上邊的例子來說,我們可以把數字作為key,文字信息作為value存入map,這樣一來,我們無需任何判斷,直接map.get(key)就可以拿到文字信息。

         通過map這個數據結構,我們可以輕易的完成對應關系,無需關心底層實現。

         需要注意的是,最好不要把對應關系在程序中寫死,可以和數據庫配合一下,創建一個專門轉換的類,這個類在加載的時候去數據庫里查一下對應關系,然后保存到map中,以后再取,直接讀map就可以了,這樣即保證了效率(只查詢一次數據庫),又保證了靈活性(修改對應關系無需改動程序,修改數據庫即可)。

 

3.map延伸。

 

         其實,map很神奇,再多考慮一步,map的value中保存的不再是基本數據類型,而是對象。

         這樣一來,通過不同的key可以拿到不同的對象,如果這些對象的類都實現同一個接口,那么這就是一個加強版的策略模式。

         策略模式就是多態,傳統的策略模式傳入的是實現類的對象,而通過map加強,只需傳入一個數字或字符串即可實現多態。

 

         當然,小菜只是簡單的總結了一下思路,應對普通的if還可以,但是對於復雜的、混有大量業務邏輯的if,還需要自行斟酌。

         希望本文能給讀者帶來啟發。

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM