Duplicated Code

徵兆與症狀

兩段或多段程式碼看起來一樣,或者,看起來很像但只有部分差異。

出現原因

通常發生多個開發者對同一個專案的不同部分做修改。由於開發者各自負責的部分不同,他們可能沒有意識到同事在其它地方寫了類似的程式碼片段,或者既有程式庫裡面已經有類似程式碼。

重複也可能以一種很隱晦的方法產生,就是以不同方法實作出同一個任務。

某些重複是有意為之的,當時程很趕的時候,經驗較少程式設計師可能會無法抗拒直接複製貼上程式碼的誘惑。某些時候,單純只是因為開發者太懶惰。

處理方法

  • 在同一個類別裡面的重複程式碼,可以用 Extract Function 來建立一個新的 function 供重複的地方去呼叫。
  • 如果重複程式碼看起來類似,但不完全一樣,可以先用 Slide Statement 把程式碼類似的地方聚集在一起,以利抽取。
  • 如果重複程式碼存在於兩個或多個子類別裡面,可以用 Pull Up Method 把程式碼抽取到父類別去。