[3] Large Class (過大的類)

3 Large Class (過大的類)
如果想利用單個類做太多的事情, 其內(nèi)往往就會出現(xiàn)太多實例變量. 一旦如此Duplicated Code也就接踵而至了.

你可以運用Extract Class(提煉類) 將幾個變量一起提煉至新的類中. 提煉時應(yīng)該選擇類內(nèi)彼此相關(guān)的變量. 將他們放在一起. 通常如果類內(nèi)的數(shù)個變量有著相同的前綴或者字尾. 這就意味著有機(jī)會把它們提煉到某個組件中. 如果這個組件合適作為一個子類, 你會發(fā)現(xiàn)Extract SubClass往往比較簡單.

和"太多實例變量" 一樣, 類內(nèi)如果太多的代碼, 也是代碼重復(fù),混亂并最終走向死亡的源頭. 簡單是解決方案, 是把多余的東西消彌與類內(nèi)部, 如果有五個"百行函數(shù)", 他們之中很多代碼都相同. 那么或許你可以把它們變成五個"十行函數(shù)" 和 10個提煉出來的"雙行函數(shù)"

如果代碼太多也適合使用 Extract Class 和Extract Subclass. 這里有個技巧: 先確定客戶端如何使用他們, 然后運用Extract Interface 為每一種使用方式提煉出一個接口. 這或許可以幫助你看清楚如何分解這個類.

如果你的Large Class是個GUI類, 你可能需要把數(shù)據(jù)和行為移到一個獨立的領(lǐng)域?qū)ο笕? 你可能需要兩邊各保留一些重復(fù)數(shù)據(jù), 并保持兩邊同步. Duplicate Observed Data(復(fù)制"被監(jiān)視數(shù)據(jù)")告訴你該怎么做. 
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容