l

2016年3月17日 星期四

用Replace Parameter with Method移除Long Parameter List怪味道

March 14 15:56~14:22

螢幕截圖 2016-03-14 16.21.59

 

▼以下範例截錄自《Refactoring》一書。Order類別的discountedPrice()函數接受兩個參數,分別是basePrice(沒打折之前的總價)以及discountLevel(折扣等級)。這兩個參數值是由呼叫它的getPrice()函數所傳入。有沒有辦法把discountedPrice()函數的這兩個參數拿掉?

螢幕截圖 2016-03-14 15.58.35

***

▼套用Replace Parameter with Method重構,把原本寫在getPrice()函數裡面的計算basePrice以及discountLevel的邏輯抽離出來,分別新增getBasePrice()和getDiscountLevel()這兩個函數。之後discountedPrice()就可以直接呼叫getBasePrice()和getDiscountLevel(),而不需透過接收參數傳遞這兩個數值。

螢幕截圖 2016-03-14 16.03.59


***

友藏內心獨白:適當使用小函數有助於整理程式邏輯。

沒有留言:

張貼留言