1. 程式人生 > >補交第九周讀書筆記:【讀書筆記(九)】重構-改善既有代碼的設計

補交第九周讀書筆記:【讀書筆記(九)】重構-改善既有代碼的設計

會有 更改 作者 設計 維護 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;
}

補交第九周讀書筆記:【讀書筆記(九)】重構-改善既有代碼的設計