2007年8月27日 星期一

D16 Copy-Paste絕對不是Reuse

許多人在面對需要新增一項功能時,如果發現已經存在一個類似的時,心裡想到的必然是重覆使用已存在的,但是需求上有些微的差異必須實作,可是又擔心修改原有的會造成side effect。這時通常祭出的是copy-paste大法,快速“生出”另外一組程式碼,再隨心所欲的修改內容。

以功能需求來說,這樣做絕對是滿足功能的最快方式,同時也可以保證功能的測試很快完成。但是,即使用的是copy-paste,對於系統來說“全部”都是新增的程式碼,根據新增程式碼的作業流程所應該製作的文件、測試與追溯一個都不能少;雖然連這些都可以複製原來的,但是這樣的行為一多,整個系統類似的物件就會以等比級數來成長。

寫程式時若有方法需要擴充功能,大家都知道在同樣的方法裡增加參數讓它可以處理更多樣的情況;功能上的想法也應該是如此,在元件裡加上符合新增需求的方法或參數,努力想辦法讓元件支援更多種的功能。在分析與設計之後,動到的程式碼與copy-paste相差無多,但是只要修改原有文件而不用再“生出”一堆其他的文件。

copy-paste出來的產物,只能應付特定範圍內的“某些指定功能”;經由設計層次定位的元件,卻能夠應付特定範圍內的“所有功能”。在未來開發的時候遇到同樣特定範圍的功能時,前者還需要列出所有元件以供挑選哪一個適合,後者則直接掛上一個元件就滿足。同樣的道理,前者在library裡必須記錄全部的Component,後者就只有一個Component。

copy-paste到底是好是壞?想讓自己產出的元件是什麼樣子?你的決定將會影響到後人對自己的評價。

沒有留言:

張貼留言