什麼是程式碼壞味道(Code Bad Smell)?
簡單的說就是指程式碼中會讓你感覺不舒服的地方,比如說洛洛長的程式碼和重複性的程式碼沒有被提出來成為一個function來執行功能。
這樣的狀況是不是常常出現在你的程式碼中?
減少程式碼壞味道的出現不只方便給別人參考、修改,對自己日後的維護也是受益良多。
以下列出幾項常見的程式碼壞味道:
1. 重複的程式碼(Duplicated Code)
如果你在一個以上的地方看到相同的程式結構,那就可以肯定,設法將它整合,讓程式變的更好。
2. 過長函式(Long Method)
3. 過大類別(Larg Class)
4. 過長參數列(Long Parameter List)
5. 發散式變化(Divergent Change)
這是指如果一個class如果再產生幾個新class時必須要額外多出幾個Method來對應其他類別的互動,那麼就將其分散為幾個class分別對應
6. 散彈式修改(Shotgun Surgery)
這跟發散式變化相反,這是指如果每遇到某種變化你就必須在許多不同的class內做出許多小修改。如果要修改的程式散佈四處不但難找也容易忘記。
7. 依戀情結(Feature Envy)
物件導向就是將資料與其操作方法的封裝技術。如果當一個class的函式對某一個class的興趣高過對自己的host class的興趣,這就是依戀情結。
8. 資料泥團(Data Clumps)
9. 基本型別偏執(Primitive Obsession)
物件導向的好處就是讓資料結構有意義,如果你在一個class裡要用很多基本型別來分別表示一些資料時,試著把這些資料整理出一個class,讓他去做一些簡單的事情。
10 switch驚悚現身(Switch Statements)
物件導向的一個最明顯的特徵就是:少用switch。本質上來說switch的問題就在於重複。常會看到相同的switch在不同的地方。如果要添加一個case就要找到所有的switch。