本文要討論大家最常做的 Copy/Paste 這件事,為了要增加寫程式的效率,有時候我們會直接自現有的程式碼中直接取出需要的部份,然後移到需要的地方,不過這種夜路走多了總會碰到鬼...
在初學或菜鳥階段,因為對物件重覆使用性 (Reusability) 的基礎並不熟 (那要寫很多物件導向程式才會有感覺的),包括筆者在內,copy/paste 基本上是很好用的一種快速程式寫法,很多網站的範例程式碼,包括 MSDN 都有 Code Snippet (程式碼片段) 的設計,用意是加速程式開發人員的寫碼速度。
Copy/Paste 本身並不是絕對的壞事,只是如果在不了解程式結構以及功能的情況下就做 Copy/Paste,很容易會讓一些潛在的問題傳播的更快,筆者先前提過的範例程式碼誤用的類型之一,正是不當的 Copy/Paste,再加上若原本使用的來源程式本身就有 bug,亦或是使用常數 (constant) 的話,在沒有發覺的情況下複製,會連同程式碼本身的問題一起被複製過去,原本可能只是一個小洞而已,未來在系統變大時可能會逐漸變成大洞,就像人身上的慢性疾病一樣,通常沒特別注意的話會逐漸形成病灶,屆時要修就得花上比研發時期要高數倍的成本才能修補。等於是自己被程式控制了一樣。
所以,如果一定要使用 Copy/Paste,請務必先把需要的程式做徹底的了解,包含是否有 bug 問題或潛在的危險,再來適當的使用,寫程式時應該要是由自己控制程式,別寫到最後反而變成程式在控制自己了。