重構手法19:Replace Data Value with Object (以對象取代資料值)

來源:互聯網
上載者:User

 

你有一個資料項目,需要與其他資料和行為一起使用才有意義。將資料項目變成對象

動機:開發初期,你往往決定以簡單的資料項目表示簡單的情況。但是,隨著開發的進行,你可能會發現,這些簡單資料項目不再那麼簡單了。如果這樣的資料項目只有一兩個,你還可以把相關函數放進資料項目所屬的對象裡;但是重複代碼(Duplicated Code)壞味道和 依戀情結(Feature Envy)壞味道很快就會從代碼中散發出來,當這些壞味道開始出現,就應該將資料值變成對象。

做法:1、為待替換數值建立一個類,在其中聲明一個const欄位,其類型和源類中的待替換數實值型別一樣。然後在新類中加入這個欄位的存取子,再加上一個接受此欄位為參數的建構函式。

       2、編譯。

       3、將源類中的待替換數值欄位的類型改為前面建立的類。

       4、修改源類中該欄位的存取子,令它調用新類的存取子。

       5、如果源類建構函式中用到這個待替換欄位(多半是賦值動作),我們就修改建構函式,令它改用新類的建構函式來對欄位進行賦值動作。

       6、修改源類中待替換欄位的設定函數,令它為新類建立一個執行個體。

       7、編譯、測試。

       8、現在,你有可能需要對新類使用 Change Value to Reference (將值對象改為引用對象)。

 

聯繫我們

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