用enum代替if 這個設計大家怎麼看

2021-09-01 11:02:32 字數 972 閱讀 3115

十一閒來無事到公司改了段**,大家看看這個修改適合不。首先放出修改前的原始的**(經過簡化,改了名字,名字隨便改的),邏輯很簡單,就是前端傳乙個引數進來,後台根據引數的不同進行不同的邏輯處理。

public class handlesomething

if (entrytype == index_entry_flow)

if (entrytype == others_entry_flow)

}private int vipflow(long userid, templatecontext context)

private int indexflow(long userid, templatecontext context)

private int othersflow(long userid, templatecontext context)

}

修改後:

public class handlesomething }}

enum flow,

taojinbi_entry_flow(2) ,

add_taojinbi(3)

};private final int tag;

flow(integer tag)

public int gettag()

public abstract int handle(long userid, context context);}}

修改後通過使用列舉型別間接地去掉了if.

我覺得修改之後有以下特點:

優點:1.execute方法的**更簡潔並且減少重複**

2.如果要增加新的處理流程只需要在列舉類中增加乙個引數型別即可,不用修改execute方法

但是我有個問題:不清楚這樣寫是否會帶來其他問題。例如效能問題和記憶體問題。

建議110 用類來代替enum

建議110 用類來代替enum 列舉 enum 用來表示一組固定的值。例如,為了表示星期資訊,我們可以定義列舉week enum week 列舉最大的優點在於它的型別是值型別。相比較引用型別來說,它可以在關鍵演算法中提公升效能,因為它不需要建立在 堆 中。但是,如果不考慮這方面的因素,我們不妨讓類 ...

用USART介面代替SPI怎麼做?

需要解答的問題 uart與usart的區別 usart的硬體連線方式 在usart選擇為同步傳輸的模式時,usart會有三個管腳被定義功能 除了rx和從機的data out相連,tx和從機的data in相連,還會有乙個sclk被使能,直接和spi的clk相連。這時,大家可能會發現,上面兩圖有一點區...

jsp中 name 這個怎麼用的

這是乙個 el表示式 取值的方法.我舉乙個具體的例子吧 比如有a頁面請求b頁面,在a頁面中有一句這樣的 string name 測試 request.setattribute name name 那麼b頁面中將這樣可以取到name中的資料 這個輸出的值應該是 測試 當然不一定要放在request中可...