臃腫的類烈拒,添加一點(diǎn)點(diǎn)功能都可能引發(fā)意想不到的結(jié)果
成因:
一個(gè)新類誕生之初規(guī)模一般很小苟蹈,“添加新功能時(shí)胡桨,在現(xiàn)存的類里添加兩行代碼肯定比新建個(gè)類輕松的多”湾宙,重復(fù)多次后恭喜你獲得了一個(gè)臃腫的類偷卧。
想當(dāng)初我也很苗條
重構(gòu)手法:
- 如果類內(nèi)的數(shù)個(gè)變量有著相同的前綴或后綴熔吗, Extract Class(提煉類)可以幫到你,如果函數(shù)可以以不同方式實(shí)現(xiàn)或在極少數(shù)情況下使用,則Extract SubClass(提取子類)會(huì)有所幫助灵临。
- 如果對(duì)分解類比較迷茫拣挪,為類的每一種使用場(chǎng)景使用一次Extract Interface (提煉接口)可以幫助你看清楚如何分解這個(gè)類。
- 如果你的類包括了很多UI代碼和業(yè)務(wù)邏輯代碼俱诸,Duplicate Observed Data(復(fù)制被監(jiān)視數(shù)據(jù))可以幫助你吧UI和業(yè)務(wù)邏輯代碼分割開來(lái)。
根據(jù)接口分割類往往有奇效
目標(biāo):分割成分工明確的類
這些類的構(gòu)造使開發(fā)人員無(wú)需記住類的大量屬性赊舶。在許多情況下睁搭,將臃腫的類分成幾部分可以避免代碼和功能的重復(fù)。
分工明確的類.png
附錄:
-
Extract Class(提煉類)
-
Extract SubClass(提取子類)
-
Extract Interface (提煉接口)
-
Duplicate Observed Data(復(fù)制被監(jiān)視數(shù)據(jù))