《重構(gòu)》讀書筆記 第一二章

第一章

重構(gòu)的基礎(chǔ):

我們需要為即將修改的代碼建立一套可靠的測(cè)試環(huán)境,為了使重構(gòu)的結(jié)果能夠得到保證,我們需要可靠的測(cè)試方式

分解并重組:

  • 分解和重組的意義:
    代碼塊越小,代碼的功能就越容易管理,代碼的處理和移動(dòng)也就越輕松。
  • 當(dāng)我們提煉一個(gè)方法時(shí),我們必須知道可能出什么錯(cuò),如果提煉的不好,就可能給程序引入BUG
  • 提煉代碼塊后,最好修改方法名和變量名使其更合理
    思考:當(dāng)代碼塊未被提取時(shí),代碼塊中所使用的變量名的含義有時(shí)候會(huì)和提取后的含義變得不同,因此改名是有必要的,如書中所說:任何一個(gè)傻瓜都能寫出計(jì)算機(jī)可以理解的代碼,唯有寫出人類容易理解的代碼,才是優(yōu)秀的程序員
  • 改名后,我們需要重新編譯并測(cè)試,確保沒有破壞任何東西
  • 將代碼放到正確的位置,我理解最好是遵循高內(nèi)聚低耦合的原則
  • 去除多余的變量或語句。盡量去除一些臨時(shí)變量,臨時(shí)變量往往引發(fā)問題,它們會(huì)導(dǎo)致大量參數(shù)傳來出去,在一些比較長(zhǎng)的方法中很容易跟丟他們,不利于閱讀。
  • 重構(gòu)時(shí)最好小步前進(jìn),如此依賴犯錯(cuò)的幾率最小
  • 重構(gòu)階段最好只考慮代碼結(jié)構(gòu)的合理性,由此可能會(huì)出現(xiàn)影響性能的操作,如:循環(huán)由一次變成了多次,作者認(rèn)為在重構(gòu)階段不必考慮這些,將代碼結(jié)構(gòu)盡可能做合理,讓自己處于有利的位置,性能問題交給后續(xù)的性能優(yōu)化。

多態(tài)的作用

  • 如有必要,使用多態(tài)取代條件邏輯
  • 將變化的部分放到對(duì)應(yīng)的類中

第二章

何謂重構(gòu)

  • 重構(gòu)提供了一種更搞笑且受控的代碼整理技術(shù)
  • 重構(gòu)不會(huì)改變軟件可觀察的行為--重構(gòu)之后軟件功能一如以往。

為何重構(gòu)

  • 重構(gòu)改進(jìn)軟件設(shè)計(jì)
  • 重構(gòu)是軟件更容易理解
  • 重構(gòu)幫助找到BUG
    有時(shí)候,我們盯著一大段代碼不停地看以期望找到BUG,但有時(shí)候這種工作效率很低,這時(shí)候不妨嘗試將這段代碼重構(gòu),搞清楚程序結(jié)構(gòu)的同時(shí),也清楚了自己所做的假設(shè),也許可以快速找到BUG
  • 重構(gòu)提高變成速度

何時(shí)重構(gòu)

  • 添加功能時(shí)重構(gòu)
  • 修改BUG時(shí)重構(gòu)
    -復(fù)審代碼時(shí)重構(gòu)

重構(gòu)的難題

  • 數(shù)據(jù)庫
    解決辦法:在對(duì)象模型和數(shù)據(jù)庫模型之間插入一個(gè)分割層,這樣就可以隔離兩個(gè)模型各自的變化
  • 修改接口
    解決辦法:
  1. 如果重構(gòu)守法改變了已發(fā)布的接口,你必須同時(shí)維護(hù)新舊兩個(gè)接口,知道所有用戶都有時(shí)間對(duì)這個(gè)變化作出反應(yīng)。
  2. 盡量讓舊接口調(diào)用新街口
  3. 使用deprecation注解標(biāo)記舊接口
    注意事項(xiàng):不要過早發(fā)布接口,盡量減少開放接口的數(shù)量
  • 難以通過重構(gòu)手法完成的設(shè)計(jì)改動(dòng)
    先想想重構(gòu)的狀況,適時(shí)決定是否進(jìn)行重構(gòu)
  • 何時(shí)不改重構(gòu)
  1. 既有代碼太混亂,重構(gòu)還不如重新寫一個(gè)來的簡(jiǎn)單
  2. 項(xiàng)目已經(jīng)接近最后期限,也應(yīng)該避免重構(gòu)

重構(gòu)與設(shè)計(jì)

  • 預(yù)先設(shè)計(jì),編碼階段實(shí)施設(shè)計(jì)過程中,有可能會(huì)出現(xiàn)預(yù)先設(shè)計(jì)的解決方案無法解決的問題,這個(gè)時(shí)候引入重構(gòu)。

重構(gòu)與性能

  • 三種快速編寫軟件的方法
  1. 時(shí)間預(yù)算法
    這通常只適用于性能要求極高的實(shí)時(shí)系統(tǒng)
  • 持續(xù)關(guān)注法
    這種方法要求任何程序員在任何時(shí)候做任何事時(shí)都要設(shè)法保持系統(tǒng)的高性能,但這通常使程序難以維護(hù),根據(jù)統(tǒng)計(jì)數(shù)據(jù),如果一視同仁的·優(yōu)化所有代碼,90%的優(yōu)化工作都是白費(fèi)勁的,因?yàn)閮?yōu)化的代碼大部分很少被執(zhí)行
  • 利用統(tǒng)計(jì)數(shù)據(jù),尋找程序中哪些地方大量消耗時(shí)間和空間,有目的的去進(jìn)行性能優(yōu)化
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • chapter 1 重構(gòu),第一個(gè)案例 1.1 什么時(shí)候需要重構(gòu) 需要為程序添加一個(gè)特性,但代碼結(jié)構(gòu)無法使自己方便的...
    VictorBXv閱讀 2,237評(píng)論 0 1
  • 《重構(gòu)》讀書筆記 總覽 第一部分 第一章從實(shí)例程序出發(fā),展示設(shè)計(jì)的缺陷,對(duì)其重構(gòu)可以了解重構(gòu)的過程和方法。 第二部...
    白樺葉閱讀 2,537評(píng)論 2 5
  • 前言: 捧讀像這一類的書對(duì)于自己來說總帶著一些神圣感,感謝自己并沒有被這么宏大的主題嚇退,看完了這里分享輸出一下自...
    我沒有三顆心臟閱讀 1,812評(píng)論 0 1
  • 重構(gòu):在不改變代碼外在行為的前提下,對(duì)代碼做出修改,以改進(jìn)程序的內(nèi)部結(jié)構(gòu),即在代碼寫好之后改進(jìn)它的設(shè)計(jì) 第一章 ...
    LorneM閱讀 518評(píng)論 0 0
  • 在《重構(gòu)》第二版發(fā)售前,有幸獲得了搶先體驗(yàn)的資格,現(xiàn)把閱讀過程中的一些心得和一些書摘整理下來。 重構(gòu)的原則 何謂重...
    碧鬼鳩閱讀 1,053評(píng)論 0 3

友情鏈接更多精彩內(nèi)容