l

2016年4月12日 星期二

用Extract Method與Move Method移除Feature Envy怪味道

March 29 08:34~09:30

螢幕截圖 2016-03-29 09.44.20

 

今天介紹如何用Extract Method與Move Method重構移除Feature Envy怪味道,關於它的說明請參考〈談談壞味道(4):Shotgun Surgery & Feature Envy〉。

▼Course類別代表一個課程,它包含了一個Teacher類別與若干的Student類別。Course的report()函數「依戀」Teacher與Student類別,因為它使用了這兩個類別的很多getter()勝於自己。

螢幕截圖 2016-03-29 08.50.55

***

▼重構方法很簡單,首先套用套用Extract Method將原本report()函數中用來列印Teacher與Student資料的程式片段抽離出來,成為reportTeacher()與reportStudent()兩個函數。

螢幕截圖 2016-03-29 08.57.34

 

▼接著套用Move Method,分別將reportTeacher()與reportStudent()移到Teacher與Student類別身上,並將其改名為report()即可。重構後的Course類別report()函數如下,程式碼清爽許多。

螢幕截圖 2016-03-29 09.19.55

***

友藏內心獨白:不該是你的就讓它離開。

沒有留言:

張貼留言