為什麼要重構

2021-06-18 08:05:48 字數 1224 閱讀 3931

在現實工作中,「重構」

更多被用來成為彌補缺陷、增加功能、修改設計等工作,而很多人潛意識裡也認為重構就是修改、重寫**,而這往往曲解了重構的本意。

重構是乙個過程,是建立在不違背外在行為的前提下,對**進行修改,改進程式的內部結構。重構不等於重新設計,軟體工程裡一定要先進行設計,再進行編碼,而如果你在之後對設計進行了改變,那只能說明當初的設計不夠合理或不夠完善。

為什麼要重構?

(1)**重複,首當其衝。

個人認為,重複是一大忌,而增大軟體的復用程度也是程式設計的主要目標。如兩個函式用到了同樣的表示式,那麼就應該考慮抽取乙個公共的表示式函式,如果不同的類用了出現了重複**,那麼就應該考慮提取公共的類。

(2)不符合**規範。

**規範應該在前期編碼時盡量避免,但誰也不能保證自己的**沒有任何規範上的問題,而事實上,因為不符合編碼規範而進行重構的佔相當一部分,如子程式過長,巢狀過深,命名較差,使用全域性變數,沒有良好地使用注釋,函式引數過多等。

(3)類的內聚性太差,類之間的耦合性過大。

如果乙個單一的class

做了許多彼此無關的事,那麼就不可避免的出現太多的

instance

常量,**重複也會接踵而至。通常情況下,這些類應該被拆分提取為多個類,每個類負責乙個內在的任務。

類的介面定義不夠完善,不夠一致。介面即服務,如果乙個介面沒有定義得很好的話,往往體現了業務邏輯關係沒有抽象好,導致未能提供層次一致的抽象。有些程式設計師常常一怒之下將類大改,這常常導致違背了最初的契約,此時類的介面會變得異常可怕。而類的耦合過大往往導致修改乙個類時,要改相應的很多類,這時類的**就當被重新組織。**的重用很重要,工作量的重用也很重要,應該盡量避免同樣的工作進行多次。

(4)**的安全性和健壯性較差。

如資料成員被置為公用,沒有提供資料庫的安全訪問方式,沒有例項化物件就呼叫對像的屬性等,這些不安全的**常常是程式隱患,**安全性的問題追蹤往往是較為困難的,特別是在軟體發布之後,與開發之初應該盡量避免,個人認為乙個較好的辦法就是加強開發者測試。

**實現晦澀,不易維護。**是寫給人看的,而不是寫給機器看的。不要為拙劣的**寫注釋編文件,應該重寫**。

case或

switch

語句,需要相同的修改,對

case

語句的修改常常導致對類似的一組

case

語句做出相同的修改,此時應該考慮是否用繼承更為妥當。

總之,應該明確乙個觀點,持續重構,避免重寫,重新設計和重寫不能成為重構的代言詞。

為什麼要重構

什麼是重構 重構,用最簡單的一句話說 就是要在不改變系統功能的情況下,對系統的內部結構進行重新調整。重構的最直接目的在於改進軟體系統的內部架構。乙個好的結構可以更加適應於需求的變化,更好的滿足客戶的需求,最大限度的延長軟體系統的生命週期。為什麼要重構 在不改變系統功能的情況下,改變系統的實現方式。為...

為什麼要進行重構? 《重構》節選

我不想把重構說成治百病的萬靈丹,它絕對不是所謂的 銀彈 不過它的確很有價值,雖不是一顆銀子彈,卻是一把 銀鉗子 可以幫助你始終良好地控制自己的 重構是個工具,它可以 並且應該 為了以下數個目的而被運用 重構改進軟體設計 如果沒有重構,程式的設計會逐漸腐敗變質。當人們只為短期目的,或是在完全理解整體設...

為什麼重構

改進軟體設計 一項主要的工作就是刪除重複的 使軟體更易被理解 為了給將來的自己看,給另乙個guy看。然後,你會看到更深遠的東西。擦掉窗戶上的汙垢,使你看得更遠 助你找到bugs kent beck 我不是個偉大的程式設計師 我只是個有著一些優秀習慣的好程式設計師而已。重構能夠幫助我更有效的寫出強固穩...