int getRation()
{
return ( moreThanFiveLateDeliveries() ) ? 2 : 1;
}
boolean moreThanFiveLateDeliveries()
{
return _numberOfLateDeliveries > 5;
}
==>
int getRatiog()
{
return ( _numberOfLateDeliveries > 5 ) ? 2 : 1;
}
一、動機
主要用在你手上有一群組織不甚合理的函數。你可以将它們都inline到一個大型函數中,再從中提煉出組織合理的小型函數。實施Replace Method with Method Object 之前先這麼做,往往可以獲得不錯的效果。
二、作法
1、檢查函數,确定它不具多态性,如果subclass繼承了這個函數,就不要将此函數inline化,因為subclass無錫覆寫一個根本不存在的函數。
2、找出這個函數的所有被調用點
3、将這個函數的所有被調用點都替換為函數本體(代碼)
4、編譯、測試
5、删除該函數的定義
對于遞歸調用、多傳回點、inlining至另一個對象中而該對象并無提供通路函數,此時不應該使用這個重構手法。