Mar. 21 14:20~15:30
Duplicated Code(重複程式碼)
在〈什麼是Refactoring?〉Teddy提到如何用context、form、force來解釋refactoring與bad smell(壞味道),也提到Kent Beck和Martin Fowler在介紹壞味道的時候並沒有特別明顯地指出是那些force造成壞味道。接下來的這一系列文章Teddy想要嘗試分析一下為什麼這些壞味道會是一種壞味道。
首先看到「十大惡人」之首的duplicated code,為什麼它是一個壞味道,而且還是最壞的壞味道?《Refactoring》書中只提到:
If you see the same code structure in more than one place, you can be sure that your program will be better if you find a way to unify them.(如果你看到相同的程式結構出現在一個以上的地方,你可以確定如果把重複之處合一,你的程式將會更好。)
But why?沒說。
鄉民甲:這還要問嗎,重複就是不好啊。
重複不一定不好,如果你要開發容錯系統,重複(冗餘)就是一種常用的手段。程式碼重複造成的問題有:
- Modifiability(修改性):降低修改性是重複程式碼最大的問題,如果程式異動之處位於重複程式碼之中,就必須要記得修改每一個重複之處,否則程式會有bug。如果你的程式從現在開始到未來的1000年都不會改變,那麼就算是現在程式中存在著很多重複程式碼,從modifiability的角度來看,也沒有關係。
- Understandability(理解性):同樣的東西出現好幾次,到底是要表達相同的概念,還是剛好看起來很像,但處理的問題不同?
- Testability(可測性):同樣的東西寫好幾次,也要測好幾次,不太划算啊。
- Resource usage(資源使用):重複的程式碼會浪費記憶空間,也會增加布署或是升級的困難。寫與修改重複的程式碼也是一種資源浪費。
以上四點是Teddy目前想出來的可能force,如果鄉民們有什麼見解也歡迎提供給Teddy參考。
***
《Refactoring》書中提到可以套用Extract Method、Pull Up Field、Form Template Method、Substitute Algorithm、Extract Class來移除duplicated code壞味道,一併提供給鄉民們參考。
***
友藏內心獨白:為什麼有種物理學在尋找上帝粒子的感覺XD。
5.Communication:重複程式碼多到一個程度,會讓團隊中的童子軍不想再努力做清道夫...
回覆刪除不過這可能有點超出「refactoring」的範圍...
會出現「團隊中的童子軍」應該是團隊彼此各自打江山吧?很少共同討論code的....見解
刪除