Summary: 函數體再也不須要某個參數。將該參數去除。程序員
動機:安全
程序員可能常常添加參數,卻每每不肯意去掉它們。他們打的如意算盤是:不管如何,多餘的參數不會引發任何問題,並且之後還有可能用上它。函數
這也是惡魔的誘惑,必定要把它從腦子裏趕出去!參數表明着函數所須要的信息,不一樣的參數值有不一樣的意義。函數調用者必須爲每個參數操心該傳什麼東西進去。若是你不去掉多餘參數,就是讓你的每一位用戶多費一份心。是很不划算的,更況且「去除參數」是很是簡單的一項重構。測試
可是,對於多態函數,狀況有所不一樣。這種狀況下,可能多態函數的另外一份(或多份)實現會使用這個參數,此時你就不能去除它。你能夠添加一個獨立函數,在這些狀況下使用,不過你應該先檢查調用者如何使用這個函數,以決定是否值得這麼作。若是某些調用者已經知道他們正在處理的是一個特定的子類,而且已經作了額外工做找出本身須要的參數,或已經利用對類體系的瞭解來避免取到null,那麼就值得你創建一個新函數,去除那多餘的參數。若是調用者不須要了解該函數所屬的類,你也能夠繼續保持調用者無知而幸福的狀態。spa
作法:接口
Remove Parameter的作法和Rename Method、Add Parameter很是類似。編譯
1.檢查函數簽名是否被超類或子類實現過。若是是,則須要針對每份實現分別進行下列步驟。重構
2.聲明一個新函數,名稱與原函數相同,只是去除沒必要要的參數。將舊函數的代碼複製到新函數中。引用
à若是要去除的參數不止一個,將它們一次性去除比較容易程序
3.編譯。
4.修改舊函數,令它調用新函數。
à若是隻有少數幾個地方引用舊函數,你能夠大膽放心地跳過這一步驟。
5.編譯,測試。
6.找出舊函數的全部被引用點,修改它們,令它們改而引用新函數。每次修改後,編譯並測試。
7.刪除舊函數。
à若是舊函數是該類public接口的一部分,你可能沒法安全地刪除它。這種狀況下,將它保留在原處,並將它標記爲deprecated(建議不使用)。
8.編譯,測試。