作為一名從業多年的程序員我來回答一下這個問題。
首先,程序員在日常開發中,雖然會有一定的復制粘貼(調試代碼、注釋、日志記錄、事務處理等常規功能性代碼),但是代碼正式版的重復率還是非常低的。
代碼重復率是檢驗代碼質量的一個重要指標,代碼重復率過高則意味著模塊化程度較低,或者抽象層次不夠,這都會引發后續代碼的擴展性問題。隨著功能的逐漸增多,過高的代碼重復率對于程序員來說無異于一場噩夢。目前代碼重復率較高的項目通常都是歷史遺留項目比較多,這些項目要么規模較小,要么設計生命周期較短。
在當前的軟件開發流程中,由于設計和實現通常是分開的,所以代碼重復率能夠得到有效的控制,從而保障軟件產品最終的質量和擴展性。設計通常分為平臺設計、接口設計和功能設計三部分,平臺設計針對基礎性問題,通常是容器類開發,接口設計通常針對行業問題進行設計,而功能設計則針對于應用場景進行具體設計。設計結束之后就是功能的具體實現過程,程序員根據接口完成相關功能的調用,從而完成業務邏輯的具體實現。通常來說,研發級程序員從事設計工作,應用級程序員從事功能實現,因為面對的問題不同,各自的知識結構也有不同的要求。
通常平臺部分的實現有非常高的要求,代碼重復率也非常低(幾乎不存在復制粘貼的問題),因為要保障平臺的可擴展性就不能有較高的代碼重復率。當然,測試版本中會有一定的代碼重復率問題,主要是測試代碼導致的。當正式版發布之后,測試代碼也會隨之剔除。
最后,CodeReview是解決代碼重復率高的有效手段之一。