1.概念:作為名詞時 → 對軟體內部結構的一種調整,目的是在不改變軟體可觀察行為的前提下,提高其可理解性,降低其修改成本。
作為動詞時 → 使用一系列重構手法,在不改變軟體可觀察行為的前提下,調整其結構。
2.兩頂帽子:用重構技術開發軟體時的「兩頂帽子」,即新增新功能以及重構。新增新功能,就不應該修改既有**,正在重構時,就不應該新增新功能,這兩頂帽子可能經常變換,但要每次操作時搞清楚自己現在戴的是哪一頂。
1.重構可以改進軟體設計
2.重構使軟體更容易理解
3.重構幫助找到bug,寫出強健的**
4.重構提高程式設計速度
1.三次法則:事不過三,三則重構。也就是說第一次做某事只管去做,第二次做類似的事會有些反感,但無論如何還是可以去做,第三次再做類似的事時,就應該重構。
2.新增功能時重構:重構一是為了能幫我理解要修改的**;二是當**的設計,無法幫助我輕鬆新增我需要的特性,但我發現如果重構後這是最快途徑,一旦完成重構,新特性的新增會更快更流暢,那麼也會選擇重構。
3.修補錯誤時重構
4.複審**時重構
目前有四個原因讓人覺得**難以相與:
1.難以閱讀的程式,難以修改。
2.邏輯重複的程式,難以修改。
3.新增新行為時,需要修改已有**的程式,難以修改。
4.帶複雜條件邏輯的程式,難以修改。
我們希望的程式:
1.容易閱讀
2.所有邏輯都只在唯一地點指定
3.新的改動不會影響現有行為
4.盡可能簡單地表達條件邏輯
而重構,就是一條擺脫困境的道路,它能在不改變行為的前提下使其具備上述美好性質,使我們能夠繼續保持高速開發,從而增加程式的價值。
一、修改介面
1.在重構介面時,千萬不要複製介面實現,這會讓你陷入重複**的泥沼之中。
2.當重構好之後,呼叫新介面時,留下舊介面,但不要發布介面
二、重構與設計
1.預先設計,盡量避免以後重構
2.先找到乙個稍稍合理地方案,就直接開幹,幹完後或者中途覺得有問題時,就進行重構(這也是我經常用的)
《重構》 2 重構原則 讀書筆記
1 重構不只是整理 而是一種更搞笑且受控的 整理技術。2 但必須對軟體 可受觀察之外部行為 只造成很小變化,或甚至不造成變化。與之形成對比的是 效能優化 和重構一樣,效能優化通常不會改變元件的行為,只會改變其內部結構。但是兩者出發點不同 效能優化往往使 較難理解,但為了得到所需的效能你不得不那麼做。...
Programming Pearls第2章思路總結
給定乙個最多包含40億個隨機排列的32位整數的順序檔案,找出乙個不在檔案中的32位整數。答案見 此部落格 總結 時刻想著利用二分搜尋來解決問題 思路一 若要旋轉k位,則每個字元向前 向後 移動k位。此方法只須n次操作,且僅需乙個元素的額外空間,但此方法實際沒比較慢,因為不能很好地利用cache。思路...
第 2 章 演算法
演算法 是解決待定問題求解步驟的描述,在計算機中表現為指令的有限序列,並且每條指令表示乙個或多個操作。指演算法在執行有限的步驟後,自動結束而不會出現無限迴圈,並且每乙個步驟在可接受的時間內完成。演算法的每一步驟都具有確定的含義,不會出現二義性。演算法的每一步都必須是可行的,也就是說,每一步都能夠通過...