打造可維護軟體C#-Ch04(不撰寫重複的程式碼)

打造可維護軟體C# 讀書筆記

  • 禁止程式碼重複
  • 撰寫可重利用的通用程式碼,並且/或者調用既有的程式碼
  • 如果程式碼重複,就得在多個地方重複修正同樣的臭蟲。

對「重複程式碼」或「克隆程式碼」(code clone) 定義為: 與出現位置無關,長度至少 6 行的一段完全相同程式碼。

書上使用的第一個重構技巧是先前提到過的也是最常用到的「提取方法」,將重複的程式碼提取到新方法,以後需要的時候,就可以調用這個方法。

然而,對於不同類別之間的重複程式碼,提取的方法需要放進一個工具類別,好讓不同的類別都可以調用。

當兩邊類別重複的程式碼提取出來之後,書中的範例還是存在著下列問題:

  1. 兩個類別仍然存在重複的邏輯。
  2. 因為C#的方法必須存在於類別中,所以必須將提取出來的程式碼放在另一個類別裡。這個類別很快就會變成一堆互不相關的方法的大雜燴,導致類別體積龐大且過度緊密耦合。

將兩個類別共用的邏輯提取成為一個新的父類別,兩個類別則成為提取父類別的子類別,「提取父類別」的重構技巧則可以解決上述的問題。