重構C語言版(一) 概念原則篇

· 當我不斷開發代碼之後,我發現,我遇到寫代碼困難,還是會持續的困擾我。
但是觀察很多大牛所做的事時,他們往往都能很快找到真實邏輯,再有效開發。如何才能達到他們的水平呢,再一次培訓中,我聽到了重構這個詞,我發現我們新手都不太注重那些已經寫過的代碼,而旨在趕緊開發出新功能,所以困難還是存在,開發效率還是沒有提高。
· 當我看到重構這本書時,我深切的體會到,它就是我需要的,我要先知道什麼是好代碼,再在老的代碼裏找到那些困難的點,把這些點一個一個解決了,才能提高編碼水平,在這裏總結我的讀書筆記,也奉獻給大家。

1. 重構是什麼

重構(名詞):對軟件內部結構的調整,目的是 提高其可理解性,降低其修改成本。
重構(動詞):使用一系列重構手法,在不改變軟件可觀察行爲的前提下,調整其結構。
提醒:
· 清理代碼不一定是"重構",可以稱爲 結構調整,而重構是特定的一類結構調整。
· 性能優化 和 重構 有時候有點類似,但是重構是爲了 讓代碼更容易理解,這可能讓代碼變得更快,也可能更慢。
· 開發軟件是 我們會處於 添加新功能 和 重構 2種狀態,每次只能幹一件事情,不能同時幹。

2. 重構的好處

· 改進軟件的設計:沒有重構,代碼就會逐漸腐化。改進的方向中最重要的是 消除重複代碼。代碼量的減少 可以讓未來可能的程序修改動作變得容易得多。
· 使軟件更容易理解
· 幫助找到BUG:理清程序的結構時,會順帶找出BUG。
· 提高編程速度:前幾個都能提高代碼質量,這回讓添加代碼越來越快。因此提高的是長期速度。

3. 何時重構

· 事不過三,三則重構。
· 預備性重構:讓新功能添加更容易;
· 幫助理解的重構: 使代碼更容易理解;
· 撿垃圾式的重構:發現一個邏輯過於複雜,記下來,馬上給他改了;
· 代碼審覈的時候,給別人提建議是改掉它;
· 當重寫比重構還容易,就別重構了。

4.重構的困難

· 延緩新功能的開發;如果做一點事情,能讓新功能實現更容易,我一定會做。
· 代碼所有權:推薦團隊代碼所有制,而不是屬於某個人,這不能阻止重構。
· 分支:特性分支離開主分支越久,集成難度會指數級上升。解決方法是:CI持續集成,每天集成一次,避免分支差異太大。
· 測試:需要有自測試代碼才能重構。
· 遺留代碼: 沒測試的,很困難,需要添加自測試代碼,逐步理清思路。
· 數據庫: 數據庫重構也要小步修改,便於回退。

5.重構和架構

通常是:先架構,再開發。
有了重構,架構也可以大幅度修改。
YAGNI:先滿足當前需求,後續有新需求想清楚了,再來考慮如何重構。
演進式架構:迭代架構設計。

6.重構和軟件開發過程

三大實踐,協同效應,保證了這些,才能談論敏捷的其他部分:
(1)自測試代碼 是基石。
(2)持續集成CI
(3)重構

7.重構與性能

· 重構和性能優化 常常被提及,似乎 讓軟件便於理解 就會 讓程序運行更慢,雖然重構可能讓程序變慢,但是它能讓性能優化變得更容易。
· 性能只是一個單一的描述程序的角度,不要只用此標準來評判程序。
· 短期來看,重構可能回拖慢程序,但是它能讓性能優化更容易,最終還是會得到好的效果。

下一篇:https://blog.csdn.net/weixin_42523774/article/details/105694606

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章