業務場景:設備和客戶端按照通訊協議進行通信,設備會有大量的消息送到到客戶端,然后客戶端收到消息並進行解析,根據不同的消息類型進行區分處理。 如果不考慮設計模式,不考慮易擴展性和易維護性,通常我們的代碼會是如下情況: 如果協議中的設備消息有100種,那我們自然就當前switch里面 ...
前言 隨着項目的迭代,代碼中存在的分支判斷可能會越來越多,當里面涉及到的邏輯比較復雜或者分支數量實在是多的難以維護的時候,我們就要考慮下,有辦法能讓這些代碼變得更優雅嗎 正文 使用枚舉 這里我們簡單的定義一個表示狀態的枚舉。 那么我們在使用的時候就可以直接通過枚舉調用了。 優雅的解決了下面代碼賦值的方式 善用 Optional 在項目中,總少不了一些非空的判斷,可能大部分人還是如下的用法 這時候 ...
2019-04-30 10:02 2 3127 推薦指數:
業務場景:設備和客戶端按照通訊協議進行通信,設備會有大量的消息送到到客戶端,然后客戶端收到消息並進行解析,根據不同的消息類型進行區分處理。 如果不考慮設計模式,不考慮易擴展性和易維護性,通常我們的代碼會是如下情況: 如果協議中的設備消息有100種,那我們自然就當前switch里面 ...
關於兩者的優缺點如下: 1.if else的優缺點 缺點:效率低(相對於switch) 優點:使用靈活,代碼空間小 2.switch的優缺點 缺點:不夠靈活,switch僅支持 int,char,unsigned char 等基本類型;代碼空間大。 優點:代碼結構 ...
我這里的業務場景是根據消息類型將離線消息存入mongoDB不同的collection中。其中就涉及到大量的分支判斷,為了增強代碼的可讀性和可維護性,對之前的代碼進行了重構。 先對比一下使用反射+策略模式前后的代碼: 重構前: 重構后: 我們可以看到重構前的代碼充斥着大量的分支 ...
轉自:https://my.oschina.net/stefanzhlg/blog/372413 我們在平時的編碼中,我們經常會遇到這樣的情況: 使用過多的switch/case 或者 if else 語句,非常不爽,也違背了面向對象的原則: 或相應的switch case代碼 ...
在很多時候,我們代碼中會有很多分支,而且分支下面的代碼又有一些復雜的邏輯,相信很多人都喜歡用 if-else/switch-case 去實現。做的不好的會直接把實現的代碼放在 if-else/switch-case 的分支之下: switch ( type ) { case ...
int main(void) { int id; scanf_s("%d",&id); switch(id) { case 2: printf("John\n"); break; case 13: printf("Mary\n ...
switch case雖然是代替if else而出現的,並不好維護,有時候使用switch還不如使用if else。 但沒有別的東西能代替switch case了嗎?答案當然是否定的,現在就有兩種方式。 先看一下使用switch的例子: 設定一個函數,傳進來num為1,2,3,4分別返回 ...
在進行編程的時候,if-else和switch-case都可用於條件判斷,這篇文章寫一寫兩者的區別。 這里從匯編角度和大家一起分析一下。在網站:https://godbolt.org/上可以查看匯編代碼。 1、switch-case 下面這張圖是switch-case,左半部分是C代碼 ...