此系列文章是我閱讀《Refactoring To Patterns》過程中實際演練的筆記。閱讀過程中發現若沒有相當的 Design Patterns、Refactoring 底子,此書真的不易閱讀,必須伴隨實際操作才能更理解每個步驟具體的方式,故在這記錄之餘也跟各位分享。
書中是使用 Java 的程式碼作為範例,而我比較熟稔 C#,所使用的演練環境為:Visual Studio 2017、ReSharper、VsVim。過程中會因應 ReSharper 的功能,所以有些許的調整以便更「優雅」的進行重構。
此篇是關於 7.5 Replace Implicit Tree with Composite 的具體演練。
此次的 smaple code 是我建立的,若有錯誤還請多包涵,詳細程式碼請見:https://github.com/mystic01/refactoringtopatterns。
以下,請搭配影片閱讀(數字表示影片時間、藍色表示重構技法、紫色表示我的困擾):
老實說這篇是我目前為止最摸不著頭緒的一篇,書中這章節罕見的並沒有用 Unit Test 覆蓋整個 Production Code,僅有用類 TDD 的方式建立了 TagNode
,確認 TagNode
是預期的行為後,再一一將 production code 給改寫為 TagNode
的樣子。這樣重構的步驟我實在抖抖的,所以我還是先建了一個 Unit Test 覆蓋整個 Production Code,依然用重構的方式由最底層的 writePriceTo
逐一重構為 TagNode
的方式。
如上所述,此篇摸不著頭緒,沒有使用到太特殊的重構技法,花更多時間在建立這個練習的 Sample Code...,但依據這系列文的原則,還是記錄一下。
- 重構
writePriceTo()
,改寫為TagNode
(composite) 的方式。0:00
建立了addAttribute()
、addValue()
、toString()
等 method。
- 重構
writeProductsTo()
。5:56
首次出現 child tag 的結構,建立add(TagNode childTag)
。
- 重構
writeOrdersTo()
。10:40
很空虛的,收工~
其他 Refacotirng To Patterns 影片請見:Refactoring To Patterns
不堪入目的練功過程:Refactoring To Patterns (exercise)