重構手法44:Remove Parameter (移除參數)

來源:互聯網
上載者:User

函數本體不再需要某個函數。將該參數去除。

動機:程式員可能檢查添加參數,卻往往不願意去掉它們。他們打的如意算盤是:無論如何,多餘的參數不會引起任何問題,而且以後還可能用上它。

       參數代表著函數所需的資訊,不同的參數值有不同的意義。函數調用者必須為每一個參數操心該傳什麼東西進去。如果你不去掉多餘參數,就是讓你的每一位使用者多費一份心。是很不划算的,更何況“去除參數”是非常簡單的一項重構。

       但是,對於多態函數,情況有所不同。這種情況下,可能多態函數的另一份實現會使用這個參數,此時你就不能去除它。你可以添加一個獨立函數,在這些情況下使用。不過你應該先檢查調用者任何使用這個函數,以決定是否值得這麼做。如果某些調用者已經知道他們正在處理的是一個特定的子類,並且已經做了額外工作找出自己需要的參數,或已利用對類體系的瞭解來避免取到null,那麼就值得建立一個新函數,去除那多餘的參數。如果調用者不需要瞭解函數所屬的類,你也可以繼續保持調用者無知而幸福的狀態。

做法:1、檢查函數簽名是否被超類或子類實現過。如果是,則需要針對每份實現分別進行下列步驟。

       2、聲明一個新函數,名稱與原函數相同,只是加上新參數。將舊函數的代碼複製到新函數中。

       3、編譯。

       4、修改舊函數,令它調用新函數。

       5、編譯、測試。

       6、找出就函數的所有引用點。將它們全部修改為對新函數的引用。每次修改後,編譯測試。

       7、刪除舊函數。

       8、編譯、測試。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.