讀《重構》4 最後

2021-07-09 11:23:10 字數 3700 閱讀 6953

本書在讀的是紙版,也收藏了 pdf 版本的。

此篇只寫了目錄方便理解這點重構方法。

第4章,測試

編寫測試為擔心的地方,而不是全部。

測試**與生產**,要分開放置,原因有幾條,最重要的一條是,生產**不可能常修改,而許可權不可能給你那麼大。而測試**卻要常修改。

第5章~12章,重構列表

許多ide 查詢乙個目錄(**專案)的引用點很方便,但是要小心反射機制是查詢不到的。

這裡的重構手法是單程序軟體,多程序的是另一種方法了。

第6章,重新組織函式,9點

( 1,提煉函式(extract method),

2,inline method 內聯函式

3,inline temp 內聯臨時變數

4,replace temp with query 以查詢取代臨時變數

5,introduce explain variable 引入解釋性變數

6,分解臨時變數(split temporary variable)

7,移除對引數的賦值(remove assignments to parameters)

8,以函式物件取代函式(replace method with method object)

有時重構函式因為臨時變數太多,不能抽出函式方法。這裡把這個函式寫到類中,把臨時變數寫成類屬性。再抽出函式放到此類中,共用類屬性就方便多了。

9,替換演算法(substitute algorithm)

第7章,

物件之間搬移特性,8點

1,搬移物件(move method)

2,搬移字段(move field)也叫搬移屬性變數

3,提煉類(extract class)

4,將類內聯化(inline class)就是將類合併,乙個類要足以承擔乙個抽象任務。

5,隱藏「委託關係」(hide delegate)

6,remove middle man 

移除中間人,移除中間過簡點的類層

7,introduce foreign method 引入外加函式

8,introduce local extension 引入本地擴充套件

第8章,

重新組織資料,16點

1,self encapsulate field 自封裝字段,p171

2,以物件取代資料值(replace data value with object), p175

3,change value to reference 將值物件改為引用物件, p179

4,change reference to value 將引用物件改為值物件, p183

5,replace array with object 以物件取代陣列, p186

6,duplicate observed data 複製「被監視資料」

7,change unidirectional association to bidirectional 將單向關聯改為雙向關聯

8,change bidirectional association to unidirectional 將雙向關聯改為單向關聯

9,replace magic number with symbolic constant 以字面常量取代魔法數

10,encapsulate field 封裝字段

11,encapsulate collection 封裝集合

12,replace record with data class 以資料類取代記錄

13,replace type code with class 以類取代型別碼

14,replace type code with subclasses 以子類取代型別碼

15,replace type code with state/strategy 以策略模式取代型別碼

16,replace subclass with fields 以欄位取代子類

第9章,

簡化條件表示式,8點

1,decompose conditional 分解條件表示式, p238

2,consolidate conditional expression 合併條件表示式

3,consolodate duplicate conditional fragments 合併重複的條件片段

4,remove control flag 移除控制標記

5,replace nested conditional with guard clauses 以衛語句取代巢狀條件表示式

6,replace conditional with polymorphism 以多型取代條件表示式

7,introduce null object 引入null物件

8,introduce assertion 引入斷言

第10章,簡化函式呼叫,15點

1,rename method 函式改名, p273

2,add parameter 新增引數, p275

3,remove parameter 移除引數

4,separate query from modifier 將查詢函式和修改函式分類

5,parameterize method 令函式帶引數

6,replace parameter with explicit methods 以明確函式取代引數

7,preserve whole object 保持物件完整

8,replace parameter with methods 以函式取代引數

9,introduce parameter object 引入引數物件

10,remove setting method 移除設定函式

11,hide method 隱藏函式

12,replace constructor with factory method 以工廠函式取代建構函式

13,encapsulate downcast 封裝向下轉型

14,replace error code with exception 以異常取代錯誤碼

15,replace exception with test 以測試取代異常, p315

第11章,處理概括關係,12點

1,pull up field 字段上移, p320

2,pull up method 函式上移

3,pull up constructor body 建構函式本體上移

4,push down method 函式下移

5,push down field 字段下移

6,extract subclass 提煉子類

7,extract superclass 提煉超類

8,extract inte***ce 提煉介面

9,collapse hiberarch 摺疊繼承體系

10,form template method 塑造模板函式

11,replace inheritance with delegation 以委託取代繼承

12,replace delegation with inheritance 以繼承取代委託

第12章,大型重構,4點

1,tease apart inheritance 梳理並分解繼承體系

2,convertprocedural design to objects 將過程化設計轉化為物件設計

3,separate domain from presentation 將領域和表述/顯示分離

4,extract hierarchy 提煉繼承體系

讀大話重構

重構步驟 分解大函式 首先找到 多 職能多 等的函式,在閱讀時整理 將相關性強的 放到一起,並編寫注釋,注意抽取小函式方法,可將一段 抽出來形成乙個新方法,源程式變為對該方法的引用。拆分大物件 大物件是指包含太多方法 數十乃至上百 與功能的超級物件。首先將每個函式抽取出來形成方法類,每個方法類都有乙...

讀重構的過程 20041029

title 讀重構的過程 content 自己的開發能力一直處與混沌狀態,也有一些想法,但是沒有發現什麼明燈 或者以現在沒有餘糧買更多的書籍去看 能夠看到 重構 還是很偶然的,要感謝老婆,到圖書館借書的時候偶然發現的 於是拿回來看看,這本書印證了一些自己的想法,對一些更高層的問題給予了指引。感覺自己...

重構 4 構築測試體系

單元測試 高度區域性化,每個測試類都隸屬於單一包。它能夠測試其他包的介面,除此之外它將假設其他包一切正常。功能測試 用來保證軟體能夠正常運作。它們從客戶的角度保障質量,並不關心程式設計師的生產力。每當你收到bug報告,請先編寫單元測試來暴露這個bug。測試風格 觀察類該做的所有事情,然後針對任何一項...