關於消除if else的簡單總結

2021-09-09 04:14:49 字數 1204 閱讀 2458

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,還需要自行斟酌。

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

C 消除函式內部的if else 的簡單的方法

在很多情況下,有些函式內部有太多的if else,不太直觀,也難以維護。舉個簡單的例子 class program public static void showerrormessage string input console.writeline errormessage return else ...

關於if else語句的寫法

假如現在我們的情況判斷確定只有兩種 當然未來可能會有新的情況 比如 正確和錯誤兩種狀態。我們定義正確的status值為1,錯誤的status值為2。不推薦的 寫法 public static void main string args else 應該這麼寫 public static void ma...

關於SEL的簡單總結

sel就是對方法的一種包裝。包裝的sel型別資料它對應相應的方法位址,找到方法位址就可以呼叫方法。在記憶體中每個類的方法都儲存在類物件中,每個方法都有乙個與之對應的sel型別的資料,根據乙個sel資料就可以找到對應的方法位址,進而呼叫方法。根據.h檔案中定義的person類和方法 執行完這行 在記憶...