Sonar中的壞習慣詳解

22種代碼的壞味道,一句話歸納:

若是一段代碼是不穩定或者有一些潛在問題的,那麼代碼每每會包含一些明顯的痕跡。
正如食物要腐壞以前,常常會發出一些異味同樣。
咱們管這些痕跡叫作「代碼異味」。

參考資料:
http://blog.csdn.net/sulliy/article/details/6635596
http://sourcemaking.com/refactoring/bad-smells-in-code
Code smells
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語句)
[解決方法]: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 -----------------------(不完善的類庫)
[解決方法]:包一層函數或包成新的類。
Data Class -------------(純數據類)類很簡單,僅有公共成員變量,或簡單操做函數。
[解決方法]:將相關操做封裝進去,減小public成員變量。
Refused Bequest --------(繼承過多)父類裏面方法不少,子類只用有限幾個。
[解決方法]:用代理替代繼承關係。
Comments ---------------(太多註釋)這裏指代碼太難懂了,不得不用註釋解釋。
[解決方法]:避免用註釋解釋代碼,而是說明代碼的目的,背景等。好代碼會說話。
--------------------- 
版權聲明:本文爲CSDN博主「windcao」的原創文章,遵循CC 4.0 by-sa版權協議,轉載請附上原文出處連接及本聲明。
原文連接:https://blog.csdn.net/windcao/article/details/25773219
相關文章
相關標籤/搜索