
66
| 第七章:在汙物中打滾
請提起勇氣修改程式碼。你有一張安全防護網:原始碼控制系統。如果你出錯,一定可
以回到當時的情況,重新嘗試一次。這不會浪費你的精力,因為透過實作,你已經學習
程式碼,以及它的能耐。
有時大膽地挖出程式碼並換掉它是值得的。看起來沒有整理或重構的程式碼,修正零散
的狀況可能太過痛苦且困難。但是換掉整個程式碼還是有一些潛在的風險:在特殊情況
下,那種讓人無法閱讀的程式碼
或許
是有原因的。每一次的修補與 hack 都會寫入一段
重要的功能,要經歷痛苦才會發現。忽略這些微妙的行為,需要自負後果。
Micheal Feathers 的
Working Effectively with Legacy Code
是一本討論如何適當地修改流
沙程式碼的優秀書籍
1
。他提到一個很棒的技術,可在程式碼中加入接縫—你可以加入
測試點,而且幾乎可以安全地加入。
戰記:容器程式碼奇案
有一種容器類別。它在專案的核心。它的內部是污穢的,API 也很糟糕。原本寫它的程
式員努力地讓它作怪。它裡面的 bug 被混亂不堪的行為隱藏起來。事實上,令人難以理
解的行為本身就是個 bug。
我們其中一位技術高超的開發程式員試著重構並修護容器。他保持外部介面的完好,並
提升許多內部的品質:修正方法,去除專案生命週期行為、效能的 Bug,及讓程式更優
雅。[Page-60]
他取出討厭的、醜陋的、過度簡化的、愚蠢的程式碼,換成截然不同的程式。但是在他
維護舊 API 的工作中,這個新的版本過於做作,比較像是科學專案,而不是實用的程式 ...