重構 改善代碼既有設計筆記

1 extract method? 提煉方法 (110)

? ? 將代碼放進一個獨立函數(shù)中滚躯,并讓函數(shù)名稱解釋該函數(shù)的用途

2 pull up field? 字段上移 (332)

? ? 兩個子類擁有相同的字段,將該字段移動到超類车猬。

3 extract class? ? 提煉類(149)

? ? 某個類做了應有兩個類做的事,建立一個新類乙墙,將相關字段和函數(shù)從舊類搬到心類宁舰。

4 move method? 搬移函數(shù)

? ? 程序中,有個函數(shù)與其所駐類之外的另一個類進行更過交流额衙,調用后者,或被后者調用怕吴,在該函數(shù)最常引用的類中建立一個新函數(shù)窍侧,將舊函數(shù)變成一個單純的委托函數(shù),或是將舊函數(shù)完全移除转绷。

5 encapsulate field 封裝字段

? ? 將其聲明為private伟件,并提供相應的訪問函數(shù)。安全問題议经,如果不封裝其他地方修改對象中的屬性斧账,該對象的使用者并不知情。

6 move?field 搬移字段

? ?與4相同意思煞肾。

7 duplicated code 重復代碼 (76)

8 form template method? 塑造模板函數(shù)? ? (345)

? ? 你有一些子類咧织,其中相應的某些函數(shù),以相同的順序執(zhí)行類似的操作籍救,但各個操作的細節(jié)上有所不同习绢。

? ? 將這些操作分別放進獨立函數(shù)中,并保持他們都有相同的簽名蝙昙。于是原函數(shù)也變得相同了闪萄,將原函數(shù)上移到超類。

? ? 調用的時候調用超類中的原函數(shù)耸黑,通過多態(tài)指定調用的子類桃煎。

? ? 設計模式中的Template method 注重順序篮幢。(我現(xiàn)在做的項目中edi導出報文使用的就是模板方法模式)

9 substitute Algorithm? 替換算法 (139)

? ? 將函數(shù)本體替換為另一個算法(注意if判斷固定幾個值時大刊,可以把固定的幾個值放入集合中 139)

10 replace temp with query? 以查詢取代臨時變量? (120)

? ? 你的程序以一個臨時變量保存某一表達式的運算結果,將這個表達式提煉到一個獨立函數(shù),將這個臨時變量的所有引用點替換為對新函數(shù)的調用缺菌,此后葫辐,新函數(shù)就可以被其他函數(shù)調用。


11 split temporary variable 分解臨時變量

? ? 你的程序某個臨時變量被幅值超過一次伴郁,他即不是循環(huán)變量耿战,也不被用于收集計算結果,針對每一次賦值焊傅,創(chuàng)造一個對立的剂陡,對應的臨時變量(final)

12 Intriduce paramter object 引入?yún)?shù)對象( 295)

? ? 某些參數(shù)總是很自然的同時出現(xiàn),以一個對象取代這些參數(shù)狐胎。(如startDate鸭栖,endDate)

13 preserve whole object 保持對象完整 (288)

? ? 你從某個對象取出若干值,將他們作為某一次函數(shù)調用時的參數(shù)握巢,改為傳遞整個對象晕鹊。

14 replace method with method object 以函數(shù)對象取代函數(shù) (135)

? ? 你有一個大型函數(shù),其中對局部變量的使用使你無法采用提煉函數(shù)暴浦,將這個函數(shù)放進一個單獨對象中溅话,如此以來局部變量就變成了對象中的一個字段,然后你可以在同一個對象中將大型函數(shù)分解成多個小型函數(shù)歌焦。


15 decompose conditional 分解條件表達式 (238)

? ? 有一個復雜的條件表達式語句飞几,從 if then else 三個段落中分別提煉獨立函數(shù)。(每一個等號都有其特定意義独撇,通過函數(shù)名稱標注)


16 extract interfact 提煉接口 (341)

? ? 若干客戶使用類接口中的同一子集循狰,或者兩個類的接口有部門相同,將相同的子集提煉到一個獨立接口中券勺。(接口彌補了繼承绪钥,通用也可以通過繼承的方式理解接口類與實現(xiàn)類)


17 Long parameter list 過長參數(shù)列

? ? 太長參數(shù)類導致難以理解。太多參數(shù)會造成前后不一致关炼,不易使用程腹,而且一旦你需要更多數(shù)據(jù),舊不得不修改他儒拂。

18 inline class? 將類內聯(lián)化? (154)

? ? 某各類沒有做太多事情寸潦,將這個類所有特性搬移到另一個類中,然后移除原類社痛。與提煉類相反见转。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市蒜哀,隨后出現(xiàn)的幾起案子斩箫,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,084評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件乘客,死亡現(xiàn)場離奇詭異狐血,居然都是意外死亡,警方通過查閱死者的電腦和手機易核,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評論 3 392
  • 文/潘曉璐 我一進店門匈织,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人牡直,你說我怎么就攤上這事缀匕。” “怎么了碰逸?”我有些...
    開封第一講書人閱讀 163,450評論 0 353
  • 文/不壞的土叔 我叫張陵弦追,是天一觀的道長。 經常有香客問我花竞,道長劲件,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,322評論 1 293
  • 正文 為了忘掉前任约急,我火速辦了婚禮零远,結果婚禮上,老公的妹妹穿的比我還像新娘厌蔽。我一直安慰自己牵辣,他們只是感情好,可當我...
    茶點故事閱讀 67,370評論 6 390
  • 文/花漫 我一把揭開白布奴饮。 她就那樣靜靜地躺著纬向,像睡著了一般。 火紅的嫁衣襯著肌膚如雪戴卜。 梳的紋絲不亂的頭發(fā)上逾条,一...
    開封第一講書人閱讀 51,274評論 1 300
  • 那天,我揣著相機與錄音投剥,去河邊找鬼师脂。 笑死,一個胖子當著我的面吹牛江锨,可吹牛的內容都是我干的吃警。 我是一名探鬼主播,決...
    沈念sama閱讀 40,126評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼啄育,長吁一口氣:“原來是場噩夢啊……” “哼酌心!你這毒婦竟也來了?” 一聲冷哼從身側響起挑豌,我...
    開封第一講書人閱讀 38,980評論 0 275
  • 序言:老撾萬榮一對情侶失蹤安券,失蹤者是張志新(化名)和其女友劉穎墩崩,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體完疫,經...
    沈念sama閱讀 45,414評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,599評論 3 334
  • 正文 我和宋清朗相戀三年债蓝,在試婚紗的時候發(fā)現(xiàn)自己被綠了壳鹤。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,773評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡饰迹,死狀恐怖芳誓,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情啊鸭,我是刑警寧澤锹淌,帶...
    沈念sama閱讀 35,470評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站赠制,受9級特大地震影響赂摆,放射性物質發(fā)生泄漏。R本人自食惡果不足惜钟些,卻給世界環(huán)境...
    茶點故事閱讀 41,080評論 3 327
  • 文/蒙蒙 一烟号、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧政恍,春花似錦汪拥、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至宗弯,卻和暖如春脯燃,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蒙保。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評論 1 269
  • 我被黑心中介騙來泰國打工曲伊, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人追他。 一個月前我還...
    沈念sama閱讀 47,865評論 2 370
  • 正文 我出身青樓坟募,卻偏偏與公主長得像,于是被迫代替她去往敵國和親邑狸。 傳聞我的和親對象是個殘疾皇子懈糯,可洞房花燭夜當晚...
    茶點故事閱讀 44,689評論 2 354

推薦閱讀更多精彩內容