怎麼寫出好代碼——壞味道

很難定義什麼是好代碼,可是壞代碼是顯而易見的。函數

良性循環

對已經具備可測試性、可維護性、可理解性的代碼進行測試和維護,可讓工做更簡單。有了這個基礎,可讓咱們更富有成效,富有成效的人時快樂的,快樂的人也是富有成效的。這是一個良性循環。測試

理論摘錄

  1. 重構的基本技巧: 小步前進,頻繁測試。
  2. 對象技術的要點在於:將數據和對數據的操做行爲包裝在一塊兒。
  3. 封裝:對外部世界隱藏內部細節。
  4. 可讓函數保持最小代碼量的一個方法是讓命令(Command)和查詢(Query)保持分離。命令函數表示 do something, 而查詢函數表示 return something。

代碼的壞味道

  1. Duplicated Code(重複的代碼)
    • 合併重複的代碼,提取,使之獨立出來
  2. Long Method(長函數)
    • 一個函數越長,圈複雜度就越大,容易出問題的點就越多,而且須要的腦容量也更大,還會致使在修復 bug 的時候,產生新 bug 的機率加大。
    • 原則:每當感受須要使用註釋說明點什麼的時候,就把須要說明的東西寫入到一個獨立的函數中。
  3. Long Parameter List(過長參數列)
  4. Divergent Change(發散式變化)
    • 一個類受多種變化的影響
    • 一旦須要修改,最好只修改一處
  5. Shotgun Surgery(散彈式修改)
    • 一種變化引起多個類須要修改
    • 每遇到某種變化,都必須在許多不一樣的類內作出許多小修改
  6. Feature Envy(依戀情節)
    • 某個函數爲了計算某個值,從另外一個對象那調用了多個取值函數
  7. Data Clumps(數據泥團)
    • 兩個類中相同的字段,許多函數中相同的參數等綁在一塊兒出現的數據,提煉成對象
  8. Switch Statement
    • 面向對象程序的一個顯著特徵:少用 switch 語句,多用多態。
  9. Complicated Condition(複雜的條件判斷)
    • 把須要註釋說明的分支條件,提煉成單獨的一個函數
  10. Proper Iterator(合理使用循環)
    • 若是有些代碼其實是重複性的工做,那麼合理的使用循環會使代碼量更少
  11. Only One Return(函數只有一個出口)
    • 提早讓函數退出,代替嵌套條件分支
    • 避免 if 分支的左右括號之間相隔 500 米
相關文章
相關標籤/搜索