重構(Refactoring)概要描述

2022-05-02 07:09:11 字數 1576 閱讀 7385

在開發過程中,總是對**進行反覆加工,隨著客戶新需求的出現,**修改起來也越來越難,很多時候,我們沒有時間去對現有專案**進行整理,只有眼睜睜地看著系統設計逐漸腐敗變質,再加上人員的流失情況,往往乙個新手在沒有完全理解系統整體設計之前,就貿然修改**,從而使程式逐漸失去自己的結構,而我們也越來越難以通過閱讀**來理解系統原本設計。

在這種情況下,對現有**進行重構(refactoring)就顯得尤其重要,重構的定義:

重構(refactoring)

名詞:對軟體內容結構的一種調整,目的是在不改變軟體之可察行為的前提下,提高其可理解性,降低其修改成本。

動詞:使用一系列重構準則(手法),在不改變軟體之可察行為前提下,調整其結構。

我們需要注意兩點:第一,重構的目的是使得軟體更加容易理解和修改,第二,重構不會改變軟體可受觀察之行為(即執行結果),重構之後軟體功能應該和之前一樣,如果連使用者都知道你修改了軟體,那你的重構肯定是失敗的。

重構改進軟體設計

我們拿最簡單的情況來進行說明,同樣的程式,設計不良的程式往往需要更多**,這常常是因為**在不同的地方使用完全相同的語句做同樣的事。這是初學者最常見的乙個問題即重複**(duplicate code),我們可以通過對既有**進行重構來消除重複**進而改進設計。**數量減少並不會使系統執行更快,因為這對程式的執行軌跡幾乎沒有任何明顯影響。然而**數量減少將使未來可能的程式修改動作容易得多。**越多,理解起來越難,正確修改越不容易,修改乙個問題有時甚至需要修改系統的的很多地方,還經常會有遺漏。消除重複**,確定**將所有事物和行為都只表述一次,惟一一次,這正是優秀設計的根本。

重構使軟體更易被理解

程式有兩類讀者,一類是計算機,我們通過編寫**來告訴計算機來做什麼事,它會精確地按照**的指示執行。另一類讀者是其他程式設計師,有很大可能會有其他開發人員通過閱讀你的**來理解系統或修改系統的一些功能。而我們常常在客戶、老闆、經理等相關人員施加的壓力下,努力讓程式運轉,根本不會想到未來出現的那個開發者,但他往往才是最重要的。假如乙個程式設計師花費了一周時間來修改某段**,而如果他理解你的**,可能只需要乙個小時,這之間的差別顯而易見。

重構助你找到臭蟲(bugs)

通過對**進行重構,我們可以深入理解**的作為,在搞清楚程式結構的同時,找到程式中存在的一些bugs。

越複雜越難以理解的**越難找到bug所在,相信每個開發人員都有過這樣的經驗,花費一整天甚至幾天的時間除錯**,尋找bug的位置所在,而當找到這個bug之後,卻發現可以很容易解決掉它。所以把**簡單化,易理解化會幫助我們更快的找到bug。

重構助你提高程式設計速度

良好設計是快速開發的根本。如果沒有良好設計,或許某段時間內你的進展速度,但惡劣的設計很快就會讓你的速度慢下來,你會把時間大量花在除錯上面,無法新增新功能。修改時間越來越長,因為你必須花越來越多的時間去理解系統,尋找重複**。

接下來的時間裡,我會把我現在學習重構知識的過程記錄下來,便於以後參考溫習。。。

Refactoring 筆記 什麼是重構

聽說這本書好長時間了,一直沒有時間去讀,也可以說一直沒時間靜下心來去讀,如果靜不下心來讀,讀了也是白讀。本人記性雖好無奈忘性更好,唯有寄於文字,記錄於此。呵呵,廢話少說,下面開始.什麼是重構?重構就是指在不改變程式外在行為的前提下,對 做出修改,改進程式內部結構的過程。書中說到本質上說,重構就是在 ...

Refactoring 筆記 第乙個案例總結

重構保障 1 建立測試環境 比如單元測試 確保重構後的 不會帶來新的 bugs。重構前提 1 當乙個函式或類履行了太多的職責。2 當乙個變更存在多個相同的修改點。3 當需要為程式新增乙個特性,而 結構使你無法很方便地那麼做。重構原則 1 盡量以最小的步伐修改程式。如果你犯下錯誤,很容易發現它。2 使...

重構之維 關於重構及《重構》的隨想

重構之維 關於重構及 重構 的隨想 重構 究竟重構了什麼?不止一次地,我聽到我們這個行業裡的大師們對重構技術提出 至少是 置疑 那是我們過去十五年裡一直在做的事 我從 上世紀 70年代就已經開始這樣做了 unix上的黑客們一直都是這樣做的 這些說辭讓我很有興趣探其究竟。在這本 重構 裡,martin...