第十章 簡化函數(shù)調(diào)用

簡化函數(shù)調(diào)用

10.1 Rename Method (函數(shù)改名)

函數(shù)的名稱未能揭示函數(shù)的用途

修改函數(shù)名稱

將復雜的處理過程分解成小函數(shù), 小函數(shù)要用好, 必須要有一個好命名, 不是會適得其反.

你不會一次就把名字起好, 大膽的更改吧.

10.2 Add Parameter (添加參數(shù))

某個函數(shù)需要從調(diào)用端得到更多信息

為此函數(shù)添加一個對象參數(shù), 讓該對象帶進函數(shù)所需信息

添加新參數(shù)的時候你應該考慮引入對象參數(shù)

10.3 Remove Parameter (移除參數(shù))

函數(shù)本體不再需要某個參數(shù)

將該參數(shù)去除

程序員常常喜歡添加參數(shù), 卻往往不愿意去除它們.

10.4 Separate Query from Modified (將查詢函數(shù)和修改函數(shù)分離)

某個函數(shù)即返回對象狀態(tài)值, 有修改對象狀態(tài)

建立兩個不同的函數(shù), 其中一個負責查詢, 另一個負責修改.

  • 記住函數(shù)的功能要單一, 如果你在多線程操作的話, 你會遇到麻煩.

10.5 Parameterize Method (另函數(shù)攜帶參數(shù))

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

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

10.6 Replace Parameter with Explicit Method (以明確函數(shù)取代參數(shù))

你有一個函數(shù), 其中完全取決于參數(shù)值而采取不同行為

針對該參數(shù)的每一個可能值, 建立一個獨立函數(shù)

10.7 Preserve Whole Object (保存對象完整)

你從某個對象中取出若干值, 將它們作為某一次函數(shù)調(diào)用時的參數(shù)

改為傳遞整個對象

  • 可以使得參數(shù)列更固定. 往往還能提高代碼的可讀性.
  • 但如果你傳遞的是整個對象, 被調(diào)用函數(shù)所在的對象就需要依賴參數(shù)對象. 如果這會使得你的依賴結(jié)構(gòu)惡化, 那么就不要使用此項重構(gòu).

10.8 Replace Parameter with Method (以函數(shù)取代參數(shù))

對象調(diào)用某個函數(shù), 并將所得結(jié)果作為參數(shù), 傳遞給另一個函數(shù), 而接受該參數(shù)的函數(shù)本身也能夠調(diào)用前一個函數(shù).

讓參數(shù)接受者去除該項參數(shù), 并直接調(diào)用前一個函數(shù).

10.9 Introduce Parameter Object (引入?yún)?shù)對象)

某些參數(shù)總是很自然地同時出現(xiàn)

以一個對象取代這些參數(shù)

當你把參數(shù)組織到一起之后, 往往很快可以發(fā)現(xiàn)一些可被移至新建類的行為.

10.10 Remove Setting Method (移除設值函數(shù))

類中的某個字段應該在對象創(chuàng)建時被設值, 然后就不再改變

取代該字段的所有設值函數(shù)

10.11 Hide Method (隱藏函數(shù))

有一個函數(shù), 從來沒有被其他任何類用到

將這個函數(shù)修改為private

10.12 Replace Constructor with Factory Method (用工程函數(shù)取代構(gòu)造函數(shù))

你希望在創(chuàng)建對象時不僅僅是做簡單的構(gòu)建動作

將構(gòu)造函數(shù)替換為工廠函數(shù)

  • 在派生子類的過程中以工廠函數(shù)取代類型碼.

10.13 Encapsulate Downcast (封裝向下轉(zhuǎn)型)

某個函數(shù)返回的對象, 需要由函數(shù)調(diào)用者執(zhí)行向下轉(zhuǎn)型

將向下轉(zhuǎn)型動作移到函數(shù)中

10.14 Replace Error Code with Exception (以異常取代錯誤碼)

某個函數(shù)返回一個特定的代碼, 用以表示某種錯誤情況

改用異常

10.15 Replace Exception with Test (以測試取代異常)

面對一個調(diào)用者可以預先檢查的條件, 你拋出一個異常.

修改調(diào)用者, 使它在調(diào)用函數(shù)之前先做檢查

不要濫用異常.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 1 Rename Method(函數(shù)改名) 修改函數(shù)名字以良好表達函數(shù)的用途。Motivation:各種大師特別推...
    hklbird閱讀 600評論 0 0
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,552評論 19 139
  • Lua 5.1 參考手冊 by Roberto Ierusalimschy, Luiz Henrique de F...
    蘇黎九歌閱讀 14,246評論 0 38
  • 本文參加#致我們單純的小美好#活動,本人承諾,文章內(nèi)容為原創(chuàng),且未在其他平臺發(fā)表過。 青蔥歲月,記憶染了流...
    記錄點滴幸福閱讀 619評論 6 3
  • 大家誤會我是老板的關系戶,我要不要澄清?人在江湖飄,誰還沒挨過幾刀?遇到被誤會的事,我們到底應該去解釋清楚,還是相...
    請叫我徐老師x閱讀 5,031評論 17 13

友情鏈接更多精彩內(nèi)容