重构手法——提炼函数、搬移函数、以多态取代条件表达式
目錄
- 我的心路歷程
- 我的學(xué)習(xí)概括
- Extract Method(提煉函數(shù))
- 動機*--做法
- 動機--做法*
- Move Method(搬移函數(shù))
- 動機*--做法
- 動機--做法*
- Replace Conditional with Polymorphism(以多態(tài)取代條件表達式)
- 動機*--做法
- 動機--做法*
我的心路歷程
今天開始學(xué)習(xí)《重構(gòu)改善既有代碼的設(shè)計》這本書。我首先翻閱了前言部分,書中寫了什么是重構(gòu)。什么是重構(gòu)?
我的思考心路:
對于重構(gòu)的認(rèn)識,我認(rèn)為程序開發(fā)并不是一個設(shè)計后即動作的行為,它需要在開發(fā)過程中持續(xù)整理程序,最大限度減少引入錯誤的概率的過程。
繼續(xù)翻閱前言,書中寫了本書有什么。告訴了書本的章節(jié)對應(yīng)內(nèi)容。第1章是一個重構(gòu)的Demo,第2章是重構(gòu)的原則定義,第3章是“壞代碼”的味道,第5-12章是核心部分——重構(gòu)的一些手法,等等。從哪開始快速入手看呢?
我的思考心路:
翻開第1章,我了解到這個Demo主要是個影片出租店程序,程序的功能是計算顧客消費金額并打印詳單。翻看了第1章目錄:起點–重構(gòu)第一步–分解并重組statement()–運用多態(tài)取代與價格相關(guān)的邏輯條件–結(jié)語。我看看結(jié)語講了什么?
翻閱結(jié)語,結(jié)語中表示第一章的Demo示范了數(shù)個重構(gòu)手法。重構(gòu)后的程序使責(zé)任分配更合理,這種風(fēng)格,將迥異于過程化風(fēng)格,也使碼農(nóng)難以再滿足于結(jié)構(gòu)化風(fēng)格。看看Demo示范了那幾個重構(gòu)手法?
Demo中重構(gòu)手法有:
P110 提煉函數(shù)
P142 搬移函數(shù)
P255 以多態(tài)取代條件表達式
P171 自封裝字段
P227 以state/strategy取代類型碼
我的學(xué)習(xí)概括
Extract Method(提煉函數(shù))
動機*–做法
我自己的理解如下:
概念:
這個手法做法是,把可以被組織到一起的代碼提煉到一個獨立函數(shù)中,并用名稱來表示用途。
應(yīng)用場景:
達到目的:
得到簡短而命名良好的函數(shù)。
優(yōu)勢:
動機–做法*
我自己的理解如下:
做法簡圖:
結(jié)合上圖,我的關(guān)注點如下:
copy過程中注意安全:
意外1:
源函數(shù)中變量、參數(shù)的作用域與新函數(shù)不一致。
措施:若是局部變量,新函數(shù)里傳入這部分參數(shù)。
意外2:
copy過程中臨時變量被修改了。
措施:將被提煉代碼段處理為一個查詢,將結(jié)果賦值給相關(guān)變量。
Move Method(搬移函數(shù))
動機*–做法
我自己的理解如下:
概念簡圖:
概念:
類A中函數(shù)Fun a與類B有調(diào)用關(guān)系的情況下,Fun a最常引用的類B中建立類似形為Fun a`的新函數(shù),則Fun a變成單純的委托函數(shù),或可完全移除Fun a。
應(yīng)用場景:
達到目的:
使系統(tǒng)中的類更簡單,系統(tǒng)任務(wù)交付更干脆。
動機–做法*
我自己的理解如下:
做法簡圖:
結(jié)合上圖,我的關(guān)注點如下:
移動路徑方向:函數(shù)Fun a與對象B交流比自己對象A交流多,所以搬移方向往B合適。
搬移過程中注意安全:
意外1:
新目標(biāo)類B中缺少對A的引用機制。
措施:把源對象類A的引用當(dāng)作參數(shù),傳給新目標(biāo)類B的Fun a`。
意外2:
Fun a包含異常處理,搬移后出現(xiàn)異常處理異常。
措施:根據(jù)邏輯判斷某個異常該由哪個類處理,若類A負責(zé),則異常處理留在類A。
Replace Conditional with Polymorphism(以多態(tài)取代條件表達式)
動機*–做法
我自己的理解如下:
概念簡圖:
概念:
將條件表達式的每個分支放進一個子類的覆寫函數(shù)中,然后將原始函數(shù)聲明為抽象函數(shù)。
應(yīng)用場景:
同一組表達式在程序多個地方出現(xiàn)。
優(yōu)勢:
動機–做法*
我自己的理解如下:
結(jié)合上面的概念簡圖,我的關(guān)注點如下:
替換過程中注意安全:
總結(jié)
以上是生活随笔為你收集整理的重构手法——提炼函数、搬移函数、以多态取代条件表达式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电脑老是提示虚拟内存不足的原因及解决办法
- 下一篇: java hibernate 表关联_H