●基本類型困擾(PrimitiveObsession)●數(shù)據(jù)類(DataClass)●數(shù)據(jù)泥團(DataClump)●臨時字段(TemporaryField)...[繼續(xù)閱讀]
海量資源,盡在掌握
●基本類型困擾(PrimitiveObsession)●數(shù)據(jù)類(DataClass)●數(shù)據(jù)泥團(DataClump)●臨時字段(TemporaryField)...[繼續(xù)閱讀]
癥狀請查看是否存在以下癥狀:●使用了基本類型或近基本類型(near-primitivetype)(int、float、String等等)●存在表示小整數(shù)的常量或枚舉●存在表示字段名的串常量原因造成基本類型的過度使用有多種原因:●缺少類(Missingclass):由于幾乎所...[繼續(xù)閱讀]
癥狀●類僅由公共數(shù)據(jù)成員組成,或者只由簡單的獲取方法和設(shè)置方法組成。這就使客戶要完全依賴于此類的可變性和表示。原因類通常可能如下誕生:你意識到某些數(shù)據(jù)是一個獨立對象的一部分,因此相應(yīng)地抽取出了一個類。這種情...[繼續(xù)閱讀]
癥狀●同樣的兩至三項頻繁地一同出現(xiàn)在類和參數(shù)表中?!翊a聲明了某些字段,并聲明了處理這些字段的方法,然后又聲明了更多的字段和更多的方法,如此繼續(xù)(也就是說,在類中同時存在成組的字段和方法)?!窀鹘M字段名以類似的...[繼續(xù)閱讀]
癥狀●字段僅在某些時候得到設(shè)置,而在其余時間內(nèi)為null(或未用)。原因?qū)ο笾械哪骋徊糠执嬖谝粋€算法,該算法要通過字段而非通過參數(shù)來傳遞信息,此時就會發(fā)生這種情況;這些字段僅在算法處于活動狀態(tài)時才有效或得到使用。字段...[繼續(xù)閱讀]
癥狀●一個類繼承自其父類,但是拋出了一個異常而不是支持一個方法,此為坦率的拒絕(honestrefusal)?!褚粋€類繼承自其父類,但是在對該類調(diào)用時,某個所繼承的方法不能正常工作,此為隱式的拒絕(implicitrefusal)。●客戶試圖通過子類的...[繼續(xù)閱讀]
癥狀●一個類訪問了其父類的內(nèi)部(本應(yīng)是私有的)部分。(這與各類之間的不當緊密性有關(guān);請參見第10章中的“不當?shù)木o密性(一般形式)”)。原因相對于兩個陌生人來說,父類與子類之間當然要親密一些。不過有時它們太過親密了(即過...[繼續(xù)閱讀]
癥狀●類并沒有做什么工作,似乎是由其父類、子類或是調(diào)用者完成了所有相關(guān)的工作,而在此類中卻沒有足夠的行為,以至于對其是否繼續(xù)存在會產(chǎn)生質(zhì)疑。原因一般來說,往往是因為:在重構(gòu)過程中,類的所有職責(zé)都已經(jīng)移至其他位置...[繼續(xù)閱讀]
●依戀情結(jié)(FeatureEnvy)●不當?shù)木o密性(一般形式)[InappropriateIntimacy(GeneralForm)]●消息鏈(MessageChains)●中間人(MiddleMan)...[繼續(xù)閱讀]
癥狀●一個方法似乎過于強調(diào)處理其他類的數(shù)據(jù),而不是處理其自己的數(shù)據(jù)。(你可能會因重復(fù)性而注意到這一點,即多個客戶在做同樣的處理,或者可能在同一行中多次看到同一個對象。)原因?qū)τ诋斍暗臄?shù)據(jù)類和原來的數(shù)據(jù)類,其客戶...[繼續(xù)閱讀]