重構摘要10_簡化函數調用

來源:互聯網
上載者:User

《重構-改善既有代碼的設計》Martin Fowler 摘要: 第十章 簡化函數調用

Rename Method 函數改名

改一個自表達的名字吧!騷年

Add Parameter 添加參數

某個函數需要從調用端得到更多資訊。

為此函數添加一個對象參數,讓該對象代價函數所需資訊。並發編程大多數參數很長,不放在一個類中,因為這樣你可以保證傳遞給函數的參數都是不可修改的。

Remove Parameter 移除參數

移除不必要的某個參數

Separate Query from Modifier 將查詢函數和修改函數分類

某個函數既返回對象狀態值,又修改對象狀態

建立兩個函數,一個查,一個改。多線程一般查改一起,那麼提供第三個方法調另兩個。

Parameterize Method 令函數帶參數

若干函數做了類似的工作,但在函數本體中包含了不同的值

建立單一函數,以參數表達那些不同的值

以“可將少量數值視為參數”為依據,找出帶有重複性的代碼。提煉參數

Replace Parameter with Explicit Methods 以明確函數取代參數

你有一個函數,其中完全取決於參數值而採取不同行為

針對該參數的每一個可能只,建立一個獨立函數。

Preserve Whole Object 保持對象完整

你從某個對象去除若干值,將它們作為某一次函數調用時的參數

改為傳遞整個對象

Replace Parameter with Methods 以函數取代參數

對象調用某個函數,並將所得結果作為參數,傳遞給另一個函數。而接受該參數的函數本身也能夠調用前一個函數。

讓參數接受者去除該項參數,並直接調用前一個函數。

Introduce Parameter Object 引入參數對象

某些參數總是很自然地同時出現。

以一個對象取代這些參數。

還可以適當的行為從其他函數移到這個建立對象中。

Remove Setting Method 移除設定函數

類中某個欄位應該在對象建立時被設定,然後就不再改變。

Hide Method 隱藏函數

沒有被其他任何類用到

Replace Constructor with Factory Method 以工廠函數取代建構函式

希望建立對象時不僅僅是做簡單的構建動作

Encapsulate Downcast 封裝向下轉型

某個函數返回的對象,需要由函數調用者執行向下轉型

將向下轉型動作移到函數中

Replace Error Code with Exception 以異常取代錯誤碼Replace Exception with Test 以測試取代異常

面對一個調用者可以預先檢查的條件,你拋出了一個異常

修改調用者,使它在調用函數之前先做檢查


聯繫我們

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