補交第九周讀書筆記:【讀書筆記(九)】重構-改善既有代碼的設計
阿新 • • 發佈:2018-06-01
會有 更改 作者 設計 維護 span 多人 成本 行為
重構,即推翻重寫。這個名詞相比對大多數程序員來說都不是愉快的。但是這本《重構-改善既有代碼的設計》卻告訴我們,重構有他的必要性。也正如書封面寫的那樣,掌握重構,是普通程序員進階到編程高手必須修煉的秘籍。
為啥要重構
先來解釋一下何為重構:“重構就是對軟件內部結構的一種調整,目的是不改變軟件可觀察行為的前提下,提高其可理解性,降低其可修改成本。”太專業的解釋了。我下個通俗的定義吧:“重構是優化代碼結構,使其閱讀性更好,擴展性更強的一種高級技術”。
軟件開發中,隨著功能的加入,程序將慢慢失去原來的結構。有些人貿然加入功能的實現代碼,但卻沒有理解原來程序的結構和考慮代碼的擴展性,程序的可讀性也非常低,隨著代碼數量越來越多,如果不進行重構的話,程序就會越來越難以維護,導致最後放棄這個程序。我們需要重構讓程序避免這樣的結果。
我覺得本書中有句話特別好”程序是首先寫給人看的,其次才是寫給機器看“,我們寫程序不可能剛開始就會有這樣很好的結構,在寫的過程中我們需要對代碼進行重構讓其走上這樣的道路,代碼越來越能看的懂,將來接手維護這個程序的人也會上手更快。
多寫測試
本書作者提倡大家多謝測試代碼,每寫完一個功能或做重構後就進行單元測試,總之多寫測試代碼,多測試自己的代碼總是會有好處的。
重構函數
這裏只舉了幾個例子
重復代碼
這種情況應該很多人都遇到過,編程中不要有大量的重復代碼,解決辦法就是去提煉到一個單獨的函數中。
void A() {
.....
System.out.println("name" + _name);
}
void B() {
.....
System.out.println("name" + _name);
}
更改為↓
void A() { .... }
void B() { .... }
void printName(String name) {
System.out.println("name" + name);
}
內聯臨時變量
如果你對一個變量只引用了一次,那就不妨對他進行一次重構。
int basePrice = order.basePrice();
return (basePrice > 100);
更改為↓
return (order.basePrice() > 1000);
盡量去掉臨時變量
臨時變量多了會難以維護,所以盡量去掉所使用的臨時變量。
int area = _length * _width;
if (area > 1000)
return area * 5 ;
else
return area *4;
更改為↓
if (area() > 1000)
return area() * 5;
else
return area() *4;
int area() {
return _length * _width;
}
補交第九周讀書筆記:【讀書筆記(九)】重構-改善既有代碼的設計