Bad Smell (代碼的壞味道)

sourcemaking
sourcemaking

若是一段代碼是不穩定或者有一些潛在問題的,那麼代碼每每會包含一些明顯的痕跡。
正如食物要腐壞以前,常常會發出一些異味同樣, 咱們管這些痕跡叫作 「代碼異味」
今天讓咱們一塊兒來熟悉開發中常常出現的22種壞味道情形和解決方法。數組

Duplicated Code

重複代碼
重複代碼
不良影響 解決方法
重複代碼,難維護 提取公共函數

Long Method

函數長
函數長
不良影響 解決方法
函數長, 難理解 拆分紅若干函數

Large Class

類大
類大
不良影響 解決方法
類大, 難理解 拆分紅若干類

Long Parameter List

參數多
參數多
不良影響 解決方法
參數多,難用,難理解 將參數封裝成結構或者類

Divergent Change

萬能類
萬能類
不良影響 解決方法
萬能類,發散試修改,改好多需求,都會動他 拆,將老是一塊兒變化的東西放在一起

Shotgun Surgery

天女散花的邏輯
天女散花的邏輯
不良影響 解決方法
天女散花的邏輯,散彈式修改,改某個需求的時候,要改不少類 將各個修改點,集中起來,抽象成一個新類

Feature Envy

紅杏出牆的函數
紅杏出牆的函數
不良影響 解決方法
紅杏出牆的函數,使用了大量其餘類的成員 將這個函數挪到那個類裏面

Data Clumps

數據團
數據團
不良影響 解決方法
數據團,常一塊兒出現的一坨數據 他們那麼有基情,就在一塊兒吧,給他們一個新的類

Primitive Obsession

偏心基本類型
偏心基本類型
不良影響 解決方法
偏心基本類型,熱衷於使用int,long,String等基本類型 反覆出現的一組參數,有關聯的多個數組換成類吧

Switch Statements

switch語句過多
switch語句過多
不良影響 解決方法
switch語句過多, 難以理解和維護 state/strategy 或者只是簡單的多態

Parallel Inheritance Hierarchies

平行繼承
平行繼承
不良影響 解決方法
平行繼承,增長A類的子類ax,B類也須要相應的增長一個bx 應該有一個類是能夠去掉繼承關係的。

Lazy Class

冗贅類
冗贅類
不良影響 解決方法
冗贅類,若是他不幹活了,炒掉他吧 把這些再也不重要的類裏面的邏輯,合併到相關類,刪掉舊的

Speculative Generality

誇誇其談將來性
誇誇其談將來性
不良影響 解決方法
誇誇其談將來性 刪掉

Temporary Field

臨時字段
臨時字段
不良影響 解決方法
臨時字段,僅在特定環境下使用的變量 將這些臨時變量集中到一個新類中管理

Message Chains

消息鏈
消息鏈
不良影響 解決方法
消息鏈,過分耦合的纔是壞的 拆函數或者移動函數

Middle Man

中介
中介
不良影響 解決方法
中介,大部分都交給中介來處理了 用繼承替代委託

Inappropriate Intimacy

太親密
太親密
不良影響 解決方法
太親密,兩個類彼此使用對方的私有的東西 劃清界限拆散,或合併,或改爲單項聯繫

Alternative Classes with Different Interfaces

類似的類
類似的類
不良影響 解決方法
類似的類,有不一樣接口 重命名,移動函數,或抽象子類

Incomplete Library Class

不良影響 解決方法
不完善的類庫 包一層函數或包成新的類

[https://sourcemaking.com/data-class]()

純數據類
純數據類
不良影響 解決方法
純數據類,類很簡單,僅有公共成員變量,或簡單操做函數 將相關操做封裝進去,減小public成員變量

Refused Bequest

繼承過多
繼承過多
不良影響 解決方法
繼承過多,父類裏面方法不少,子類只用有限幾個 用代理替代繼承關係

Comments

太多註釋
太多註釋
不良影響 解決方法
太多註釋,這裏指代碼太難懂了,不得不用註釋解釋 避免用註釋解釋代碼,而是說明代碼的目的,背景等。好代碼會說話

參考資料

相關文章
相關標籤/搜索