l

2016年3月4日 星期五

用Decompose Conditional移除Long Method怪味道

Feb. 15 00:05~00:22

螢幕截圖 2016-02-15 00.20.15

▲Google搜尋結果

 

條件判斷式也是造成Long Method怪味道的常見原因之一,今天介紹Decompose Conditional重構來移除這個怪味道。

▼以下範例節錄自《Refactoring》。Order類別有一個charge()函數,接受兩個參數:日期與數量。如果日期在夏季開始之前或是夏季結束之後,則訂單的金額採取冬季計價,反之則採取夏季計價。

螢幕截圖 2016-02-15 00.07.21

***

▼charge()函數的邏輯雖然不複雜,但還是要動點腦筋才想得清楚。看看套用Decompose Conditional如何讓它變得更清楚易懂。把原本charge()函數抽離出notSummer()、winterCharge()與summerCharge(),重構之後的charge()函數不但簡化了條件式,程式邏輯也變得一目了然。

螢幕截圖 2016-02-15 00.14.30

***

看完這個例子不知道鄉民們有沒有發現,Decompose Conditional其實透過Extract Method來簡化條件是邏輯。如果不想記那麼多重構方法,可以只記住基本的Extract Method。

***

友藏內心獨白:應用情境不同就產生不同名稱的重構方法。

沒有留言:

張貼留言