Chapter 2 重構的原則

2021-10-07 21:18:09 字數 1396 閱讀 3329

在不改變軟體可觀察行為的前提下,使用一些重構的手法,提高**可讀性。

換句話說,在保持軟體可用的前提下,修改**使得更加容易被理解。

為了後續的**維護和修改,易讀是重構的核心價值。

除此之外,重構隨之帶來的好處有:

總而言之:重構的門檻遠遠沒有想象中那麼高,重構是對既有**的修改,也許我們在無意識中就已經做了這樣的工作,一方面繼續保持良好的程式設計習慣,另一方面學習更加成體系的重構手法。

就如同重構的定義,在可用的前提下,提高重構的技術。

什麼時候不應該重構?

對於一段凌亂的**,如果不需要修改它,就不需要重構。

只有當你需要理解其工作原理時,重構才變得有價值。

如果重寫比重構更加容易,那就不需要重構了。(判斷)

「畢竟生活裡很少有晴空萬里的好事」

——martin fowler

先新增新功能再重構,還是先重構再新增新功能,這不是乙個對錯的問題,而是乙個取捨的分叉口。

martin fowler的回答醍醐灌頂,作為程式設計師往往對**庫的整潔有著極高的追求,以技術去驅動重構沒有錯,但現實世界往往取決於經濟。

「重構的意義不在於把**庫打磨的閃閃發光,而是純粹經濟角度出發的考量。」

「重構應該總是由經濟利益驅動。」

除了重構之外,現在的團隊開發,前後端分離等等,不僅是技術發展的必然結果,同時也是經濟化必然的結果。同樣的場景,是否重構更多取決於經濟條件。

修改函式宣告和呼叫可能也會遭遇宣告者無法修改呼叫者**的許可權問題。

martin fowler推薦的是團隊**所有制。對於跨團隊的相容,可以採用類似github上開源的模型。

(在強**所有制和混亂修改的折中)

在隔離的分支上工作的越久,需要完成的整合工作就越困難。

持續整合(ci:continuous integration):也稱基於主幹開發。為了避免彼此分支差異過大,每個團隊成員每天至少向主線整合一次。

建立一套完備的測試套件,並且需要快速執行。

準備這套測試套件的代價很高,但收益也是可觀的:

重構可以很好的理解遺留系統,但同時又是十分危險的。

再次推書了,hhh《修改**的藝術》:運用重構手法創造出接縫,在接縫處插入測試。(當然,具有一定風險)

flower先生的同事發明了一套漸進式資料庫設計和資料庫重構的方法.......

(看書就好像布置家庭作業一樣。。。難頂)

重構:使**更易讀

效能優化:使**執行速度更快

先寫出可調優的軟體(重構),然後對其調優達到足夠的速度(效能優化)。

關於效能優化:現狀——大半時間都花在了一小段**上。

使用乙個度量工具監控程式的執行,找出效能熱點的一小段**集中調優。

intellij idea可以自動重構的......(說明我對這個工具的利用程度還不夠高)

Chapter 2 重構的原則

在不改變軟體可觀察行為的前提下,使用一些重構的手法,提高 可讀性。換句話說,在保持軟體可用的前提下,修改 使得更加容易被理解。為了後續的 維護和修改,易讀是重構的核心價值。除此之外,重構隨之帶來的好處有 總而言之 重構的門檻遠遠沒有想象中那麼高,重構是對既有 的修改,也許我們在無意識中就已經做了這樣...

《重構》 2 重構原則 讀書筆記

1 重構不只是整理 而是一種更搞笑且受控的 整理技術。2 但必須對軟體 可受觀察之外部行為 只造成很小變化,或甚至不造成變化。與之形成對比的是 效能優化 和重構一樣,效能優化通常不會改變元件的行為,只會改變其內部結構。但是兩者出發點不同 效能優化往往使 較難理解,但為了得到所需的效能你不得不那麼做。...

chapter2 演算法 程式的靈魂

資料結構 對資料的描述。演算法 對操作的描述。演算法 資料結構 程式 2.1什麼是演算法 演算法 廣義上,為解決乙個問題而採取的方法和步驟。計算機演算法分為兩類,非數值演算法和數值演算法。2.2簡單的演算法舉例 例2.11 2 3 100 從這個例子裡面,給出了新的思路,也就是迴圈的概念。通過迴圈能...