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ù)")告訴你該怎么做.