If it strikes,change it!
以下是一些需要被重構的code,若你的程式碼出現在下列的某幾種現象時,請改善它
1.Duplicated Code : 重覆的程式碼
2.Long Method : 太長的函式
3.Large Class : 過大的類別
4.Long Parameter List : 太長的參數列
5.Divergent Change : 發散式變化 (一個class受多種變化的影響)
6.Shotgun Surgery : 霰彈式修改 (一種變化會引發多個class的修改)
7.Feature Envy : 依戀情結 (函式對於某個class的存取,高過於自己的host class)
8.Data Clumps : 資料泥團 (某些資料總是綁在一起並,一起出現在多個地方)
9.Primitive Obsession : 基本型別偏執 (將幾個俱相關的基本型別合併成一個小物件)
10.Switch Statement : (少用switch句型)
11.Parallel Inheritance Hierarchies : 平行繼承體系 (不同繼承體系中存在著相同的class)
12.Lazy Class : 冗員類別 (除去沒有必要的class)
13.Speculative Generality : 非必要地談未來性 (除去非必要的hook)
14.Temporary Field : 暫存欄位 (除去class中,暫存用的欄位)
15.Message Chains : 過度耦合的訊息鏈 (連續向不同的函式要求不同的物件)
16.Middle Man : 中間人 (除去一些不做實事的函式)
17.Inappropriate : 狎暱關係 (兩個class花太多時間去用對方的private成員)
18.Alternative Classes with Different Interfaces : 異曲同工的類別 (兩個不同函式卻做一樣的事)
19.Incomplete Library Class : 不完備的函式庫 (想修改library部分功能時)
20.Data Class : 純稚的資料類別 (封裝好data class)
21.Refused Bequest : 被拒絕的遺贈 (當subclass 不希望或不需要得到superclass的功能)
22.Comments : 過多的註解 (試著讓註解變得多餘)
當你感覺需要撰寫註解時,請先嘗試重構,試著所有註解都變成多餘的 :)