March 29 08:34~09:30
今天介紹如何用Extract Method與Move Method重構移除Feature Envy怪味道,關於它的說明請參考〈談談壞味道(4):Shotgun Surgery & Feature Envy〉。
▼Course類別代表一個課程,它包含了一個Teacher類別與若干的Student類別。Course的report()函數「依戀」Teacher與Student類別,因為它使用了這兩個類別的很多getter()勝於自己。
***
▼重構方法很簡單,首先套用套用Extract Method將原本report()函數中用來列印Teacher與Student資料的程式片段抽離出來,成為reportTeacher()與reportStudent()兩個函數。
▼接著套用Move Method,分別將reportTeacher()與reportStudent()移到Teacher與Student類別身上,並將其改名為report()即可。重構後的Course類別report()函數如下,程式碼清爽許多。
***
友藏內心獨白:不該是你的就讓它離開。
沒有留言:
張貼留言