重復代碼的產生由各種各樣的原因,經常看到程序員把幾行或一整段代碼從這里復制到這里,然后稍加修改,就變成了一份新的代碼。這里的原因是程序員可以通過極少的努力就完成代碼重用,但是我們可以來看看軟件開發原則:
1、存在的理由
一個軟件系統存在的理由就是:為它的用戶提供價值。你所有的決定都取決于這一點。在指定一個系統需求,在寫下一段系統功能,在決定硬件平臺和開發過程之前,問你自己一個問題,“這樣做會為系統增加價值嗎?“,如果答案是”yes”,那就做。如果是”No”,那就不做。這個原則是其他原則的原則。
2、能簡單就簡單
軟件設計不是一個輕描淡寫的過程。在做任何一個設計時,你必須考慮很多因素。所有設計應當盡可能簡單,但是不要再比這簡單了。這樣產生的系統才是可以理解和容易維護的。這并不是說很多由意義的特性,因為這種簡單性也要被拋棄。事實上,簡單是通過許多思考和一次一次的反復修改才達到的。這些努力的匯報就是更容易維護,代碼錯誤更少。
3、保持遠見
清晰的遠見是一個軟件項目成功的基礎。沒有這樣的遠見,項目開發最后就變成天天為一個不好的設計做補丁。概念的完整性是系統設計中最重要的問題。只有當你對系統的體系由一個清晰的感覺,才可能去發現通用的抽象和機制。開發這種通用性最終導致系統更簡單,因此更小,更可靠。如果你不斷地復制、粘貼、修改代碼,最終你將陷入一個大泥潭,你永遠不可能對系統有一個清晰的認識。
4、你制造的,別人會消費
軟件系統不是在真空中使用的。其他人會使用、維護、文檔你的系統。這依賴于對你系統的理解。所以,你設計、實現的東西應當能夠讓別人理解。要記住,你寫的代碼并非只給計算機看,你要時時記住,代碼還要給人看。
如果到處泛濫似是而非的代碼,別人如何能夠辨別這些代碼的相似和不同,如何去理解這些代碼之間具有何種關系。
5、對將來開放
一個成功的軟件有很長的生命期。你必須能夠使得軟件能夠適應這樣和那樣的變化。所以,一開始就不要軟件設計到死角上去。這個問題,你要考慮到各種各樣的可能性,而不光光是圖省事。復制,粘貼一下即可。
6、為重用做好計劃
軟件模式是重用計劃的一種。不斷重復的代碼顯然不是這樣的計劃。
7、思考
在采取任何動作之前首先做一個清晰、完整的考慮,這樣才能產生更好的結果。如果你考慮了,但還是產生錯誤的結果,那么這種努力也是值得的。在你學習或研究類似的問題時,更容易理解和掌握。
這些原則告訴我們輕松地復制、粘貼和修改代碼不可能產生好的,也就是容易理解、維護、重用的代碼。但請不要走極端。
一個好的軟件系統是各種因素權衡的結果,也就是你如何把握一個度的問題。重復代碼產生的另外一個主要原因就是做得太多。如果你去實現你現在認為將來需要的東西,不一定就是你以后真正需要的東西。你處于現在的環境中可能無法理解你要實現東西究竟是什么樣子的。你會浪費大量的時間去構造這樣不知道是否必須的可能性。同時,當你真正實現的時候就可能產生重復代碼。