來改善你的switch語句

2021-08-29 11:24:43 字數 1257 閱讀 6708

善用多型來改善你的switch語句

下面舉的這乙個例子,其實和《重構》第一章裡面的那乙個經典例項很像的,《重構》一本書絕對是一本好書,非常不錯值得推薦的一本書。

舉乙個例子,是我現在的乙個專案裡面一位同事寫的一小段**,**如下,它可以根據不同的操作符進行加減乘除方面的操作,而且這一些操作很有可能發生一些變化。當重構成我的現在每天的麵包和水的時候,我看到switch語句,就想能不能把改良一下。雖然改善後,**量是增加,但從可維護的角度來講,我個人認為還是值得的,特別在你需要的操作的switch語句裡面很有可能發生需求變化的時候。

[code]private void cacudata(datarange datarange, char oper)

}/** 處理除數方法; */

private void divisionprocess(double firstdata, double seconddata) else

}[/code]

我看到firstdata,seconddata就想能不能把它們放到乙個range範圍的類裡面是不是更好呢,於是新建了乙個

[code] public class doubledatarange

public double getfirstdata()

public double getseconddata()

}[/code]

然後我們再新建一系列操作方面的類,為每乙個操作類新增乙個類,也是這一次重構最核心的東西,其**如下:

[code]abstract class operation

class plusoperation extends operation

}class subtractoperation extends operation

}class multiplyoperation extends operation

}class divisionoperation extends operation else

}}[/code]

接下來的工作就很簡單啦,把以前兩段**全部刪除掉,換上如下的**,雖然這乙個時候也有switch語句,但它只是純粹地變成了乙個取operation的類而已,並沒有包含任何的操作。

[code]private void cacudata(datarange datarange, char oper)

private operation operation;

private void setoperation(char oper)}}

[/code]

switch語句的優化

switch語句的優化 flyfish 通常的形式 void test int t 一 當 段比較多時候 就會提取函式 void test int t void function1 void function2 二 當類中有型別時可以使用設計模式優化 例如class employee 優化為 cla...

switch語句的妙用

switch語句的普通用法很簡單,如下 var a 3 switch a 這裡a和case列表中從上而下逐一做比較,如果匹配就執行case中的 若有break則跳出,無break則繼續往下匹配,直到新的匹配和break或switch 塊結束。注意 a和case值的匹配演算法是執行嚴格相等比較的 通常...

switch語句的語法

關於switch語句 1.switch語句也屬於選擇結構,也是分支語句 2.switch語句的語法結構 乙個比較完整的switch語句應該這樣編寫 switch int或string型別的字面值或變數 3.switch語句的執行原理 switch後面小括號當中的 資料 和case後面的 資料 進行一...