程式碼的味道 (轉)
程式碼的味道 (轉)[@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的好地方。
(說明,這是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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 21種程式碼的“壞味道” (轉)
- 程式碼的壞味道「上」
- 22種程式碼的壞味道
- 消滅 Java 程式碼的“壞味道”Java
- 優化程式碼中的“壞味道”優化
- 程式碼壞味道之非必要的
- 程式碼的壞味道和重構
- 程式碼壞味道之程式碼臃腫
- 幹掉你程式碼中的壞味道
- [譯] 再談 CSS 中的程式碼味道CSS
- 程式碼的壞味道:可變的資料
- 重構:幹掉有壞味道的程式碼
- 怎麼消除JavaScript中的程式碼壞味道JavaScript
- 消除程式碼中的壞味道,編寫高質量程式碼
- 程式碼壞味道之濫用物件導向物件
- 找出那些程式碼裡的壞味道吧——《重構》筆記筆記
- 想要寫出好味道的程式碼,你需要養成這些好習慣!
- Decorator模式有代理的味道模式
- 軟體管理中的壞味道薦
- 程式碼的風格 (轉)
- JavaScript 程式碼的加入(轉)JavaScript
- 如何閱讀他人的程式程式碼[轉]
- 快速程式碼展示之快速的例子程式碼片段(轉)
- 旋轉文字的CSS程式碼CSS
- 何謂“好的程式碼”? (轉)
- 高亮你的PHP程式碼 (轉)PHP
- 精妙程式碼 (轉)
- “使命召喚”的新“吃雞”模式味道如何?模式
- 聞“味道”招人 一個遊戲公司HR的自白遊戲
- 編寫易讀的程式碼 (轉)
- Java 程式編碼的規範(轉)Java
- 程式碼維護:改進程式碼的一些方法 (轉)
- java 程式碼格式(轉)Java
- 實用的檢測解析度的程式程式碼 (轉)
- 禁止百度轉碼程式碼
- (轉載)編寫高效的jQuery程式碼jQuery
- linux下svn的常用程式碼【轉】Linux
- 轉: Windows控制程式碼數的限制Windows