為什麼要重構

最常聽到「程式能跑就好了」、「改壞了怎麼辦?」、「原本負責的人不見了,沒人知道這段程式碼在做什麼」。這些話的出發點大多是在程式碼只有一次性的需求,或維護程式碼的人沒打算長居久留,反正之後是別人的事。

但大家的車都會定期去保養吧?房間會定期整理吧?甚至會去做全身健康檢查吧?那為什麼程式碼不需要重構呢?

「重構」這個詞有點慎重,我有時會用「整理」來表達這件事。


重構會有幾個好處,大致列出這幾個:

提升可讀性

雖然程式碼跑得動,也通過真人測試,但程式碼可能很亂。試想桌機後面接的所有線,如果在沒有整理的情況下是不是都打結了,但設備一樣有正常運作,只是當要換滑鼠的時候就有可能要花時間去找。如果平常都有整理程式碼,要換滑鼠還是接兩個滑鼠是不是就會簡單的多了?

提升可測試性

重構程式碼的有個大前提,就是要先有自動化測試,因為測試就是將「使用者」寫成程式碼。在原有的功能要新增修改新功能時,會在統整的過程中,重新確認原有的測試是否能保護新的變動。

活化舊程式碼

舊的程式碼如果沒有適時的迭代整理,會成為系統更新和升級的成本,也就是一種潛在技術債。反過來說,更新和升級會迫使程式碼要整理。整理程式碼可以讓舊程式碼適用新的寫法,同時也能重新確認功能需求。


會不會越改越爛?

就我看到的套件、框架或程式語言的更新或升級的 release log 都是正向的內容,這意味著大多數的開發人員都是以「善」為本。即便當前的「善」可能搞砸了,也屬於無心之過,應該要再更積極的去修正。當然,我也聽過有人會提交惡意的程式碼,但這只能交給版控去管理了。

Last updated