Skip to main content

重構的過程應該是什麼樣子

Opass
A life well lived

Legacy Code 是一間沒人維護的廁所

Legacy Code就像是一間沒有人維護的廁所,功能正常,拉屎沖得掉,但裡頭充滿難聞的氣味,牆上被簽字筆寫上各種低俗的髒話,不小心還會踩到髒東西,你連一分鐘都不想待在這裡。

缺乏重構能力的工程師遇到這種狀況通常只有兩種選擇,塞一堆註解在程式裡,就像往這間廁所拼命噴芳香劑,希望可以不那麼難受。或是或是乾脆直接重寫,重新搭一間廁所。

重新搭一間廁所聽起來很棒,大家都喜歡重新設計,展現自己的技巧順便唾棄前人的程式碼,但重寫的成本往往被低估,重寫期間,商業上並沒有帶來更多價值,另外重寫的可能會遺漏一些隱晦的需求。最重要的是,缺乏清掃廁所的能力,只會蓋廁所的工程師所重寫出來的程式,可能只是下一間髒亂的廁所。

做一個專業的清潔人員(X)工程師(O)

專業的工程師在面對髒亂的環境時,有辦法讓其變得更好,清掉那些難聞的壞味道。更厲害的是,整個過程是安全的。每一步的操作,程式都保有原本的功能,而且品質都比之前更進步,你隨時可以停下手邊的重構去處理其他需求,不會因為這樣就改壞原本的程式。

為了達到這樣的目標,需要釐清需求、替原本的程式碼補上測試。善用工具降低改壞的可能。釐清class的職責,並且有能力逐步的調整。

我們不嘴砲,直接動手幹。在這一系列的影片中,我會以一個簡化過的Legacy Code,直接示範重構的過程應該是什麼樣子。

前半段我會解釋整個程式的功能,並且示範補上測試、涵蓋完整的需求,而且我還會將測試進行重構,確保其清晰可讀,後半段我會開始小步小步的進行重構,簡化程式的邏輯、安全的改變演算法、將部份職責轉移到另外一個類進行處理,你會見到一個原本髒亂、難以理解的Legacy Code逐漸消失,變成簡短、更為清晰的程式碼。

整段影片大約在60分鐘上下,為了降低讀者的負擔,我將影片分成十個段落,每部片控制在6分鐘上下,有興趣的觀眾可以從中學習到重構的技巧,有可以改進的地方也歡迎先進們指教。

Video

下列網址可以直接前往youtube播放清單 https://www.youtube.com/watch?v=7jLdwYBHoeY&list=PLbBqYSGrVeaFJlxmH5cjA4b4jHp669PQj

Ep01: