Can you summarize the following document?
        
  產生程式碼重複可能有以下幾個原因:

  不恰當的程式碼重複表明程式設計不良,例如缺少抽象。這會導致程式過長,錯誤更多,進而難以維護,因為需要人工尋找並修改重複的部分。然而由於種種原因,適當的程式碼重複難以避免,例如給與已有裝置相似的新裝置寫驅動程式時,複製程式碼能使開發更便捷。  當複製具有軟體漏洞的程式碼時,如果開發人員不知道這樣的副本,則複製的程式碼中可能會繼續存在漏洞。程式碼重構可以改善許多軟體的度量衡標準,例如原始碼行數,迴圈複雜度和耦合度。這可能會縮短編譯時間,降低認知負載,減少人為錯誤,減少被遺忘或被忽視的程式碼。  但並不是所有的程式碼重複都可以被重構。如果程式語言提供不充分或過於複雜的抽象,克隆或許是具有速度效益上的解決方式,特別是修改程式碼使用的編輯器如有支援區塊(行)編輯的功能。而且,重構時破壞程式碼的風險可能會超過維護的效益。重複的程式碼似乎不會比不重複的程式碼更容易出錯。使用開源方式共享程式碼元件,而不是在軟體配置管理的倉儲庫之間複製它們,也可以減少複製。

  檢測程式碼重複的手段有:

  以計算整數陣列的平均值的程式碼片段為例  這兩個迴圈可以改寫為一個函式:  利用以上函式可以寫出無重複的原始碼
程式碼重複(英文:duplicate code,也叫程式碼克隆)在程式設計中表示一段原始碼在一個程式,或者一個團體所維護的不同程式中重複出現,是不希望出現的現象。為避免巧合,只有一定數量的程式碼完全相同才能判定為程式碼重複。重複程式碼的段落有時被稱為程式碼克隆,自動檢測程式碼重複的過程叫做克隆檢測。