重構手法50:Introduce Parameter Object (引入參數對象)

來源:互聯網
上載者:User

某些參數總是很自然地同時出現。以一個對象取代這些參數。

動機:你常常會看到特定的一組參數總是被一起傳遞。可能有好幾個函數都使用這一組參數,這些函數可能隸屬同一個類,也可能隸屬不同的類。這樣一組參數就是所謂的Data Clumps(資料泥團),我們可以運用一個對象封裝所有這些資料,再以該對象取代它們。哪怕只是為了把這些資料群組織在一起,這樣做也是值得的。本項重構的價值在於縮短參數列,過長的參數列總是難以理解的。此外,新對象所定義的訪問函數還可以使代碼更具一致性,這又降低了理解和修改代碼的難度。

       本項重構還可以帶給你更多好處。當你把這些參數組織到一起後,往往很快可以發現一些可被移至建立類的行為。通常,原本使用那些參數的函數對這一組參數會有一些共通的處理,如果將這些共通行為移到新對象中,你可以減少很多重複代碼。

做法:1、建立一個類,用以表現你想替換的一組參數。將這個類設為不可變的。

       2、編譯。

       3、針對使用該組參數的所有函數,實施Add Parameter (添加參數),傳入上述建立類的執行個體對象,並將此參數值設為null。

       4、對於Data Clumps(資料泥團)中的每一項,從函數簽名中移除,並修改調用端和函數本體,令它們都改而通過新的參數對象取得該值。

       5、每去除一個參數,編譯並測試。

       6、將原先的參數全部去除後,觀察有無適當函數可以運用 Move Mothod(搬移函數)到參數對象中。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.