程式碼的味道 (轉)

worldblog發表於2007-12-10
程式碼的味道 (轉)[@more@]程式碼的味道(轉貼之UMLCHINA,講述在什麼情況下進行refactoring)
  (說明,這是erptao.org,refactoring論壇中關於Code Smell的一個貼子,以後我會把相關內容繼續轉貼到這裡)
什麼時候需要Refactoring?
程式碼的味道是高水平員對“好程式“的一種感覺,他們具備一種能力,即使不涉及程式程式碼的具體實現就能看出你的設計是否合理。
如果程式碼有“異味“,那麼你需要進行Refactorying.

1.重複程式碼(Duplicate Code)
即使是一兩句程式碼的重複也需要refactoring,有時候重複不是那麼明顯,你需要首先進行其他的refactoring才能看到程式碼重複。排除程式碼重複是OO工程最重要的研究課題之一
2.長方法(Long Method)
來自於程式導向的思路,即使能夠在一頁內能夠顯示的方法也可能太長。
3.大類(Large Class)
一個類含有太多的責任和行為
4.引數太多(Long Parameter List)
含有狀態,不再需要太多的引數。
5.不一致的變化(Divergent Change)
不要把變化速度不同的東西放在一起。不要把一個方法對每個子類的變化的部分和不變化的部分放在一起。不要把物件中每秒都在變化的例項變數和一個月才變化一次的勢力變數放在一起...等等。
6.Shotgun Surgery
改變影響到太多的類和方法
7.特性羨慕(Feature Envy)
對其他物件中的資料太感興趣了
8.資料從(Data Clumps )
一塊資料到處一起使用,他們應該有自己的類
9.原始型別困擾(Primitive Obsession)
用類代替原始資料型別
10.開關語句(Switch Statement)
物件導向由其他辦法來處理這些依賴於型別的方法。
11.並行繼承層次(Parallel Inheritance Hierarchies )
有時候有用但有時候不必要
12.惰類(Lazy Class)
不足以自己成為一個類,應該排除
13.投機通則(Speculative Generality )
不要太多考慮為將來而建立的靈活性
14.訊息鏈(Message Chain )
硬性把客戶和導航結構相耦合
15.中間人(Middle Man )
如果他所有的事情就是在做分派,那麼應當刪除。
16.不合適的親密(Inappropriate Intimacy)
限制對其他類內部結構的知識和了解。
17.不完整的庫類(Incomplete Library Class )
某些時候必須擴充套件一增加所需的功能
18.資料類(Data Class )
應當新增任務和行為來處理它的資料
19.被拒絕的遺產(Refused Bequest )
子類很少利用父類給予它們的東西
20.註釋(Comments )
註釋是說明why而不是what的好地方。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-991106/,如需轉載,請註明出處,否則將追究法律責任。

相關文章