一個軟件總是為解決某種特定的需求而產(chǎn)生,時代在發(fā)展,客戶的業(yè)務也在發(fā)生變化。有的需求相對穩(wěn)定一些,有的需求變化的比較劇烈,還有的需求已經(jīng)消失了,或者轉化成了別的需求。在這種情況下,軟件必須相應的改變。
考慮到成本和時間等因素,當然不是所有的需求變化都要在軟件系統(tǒng)中實現(xiàn)。但是總的說來,軟件要適應需求的變化,以保持自己的生命力。
這就產(chǎn)生了一種糟糕的現(xiàn)象:軟件產(chǎn)品最初制造出來,是經(jīng)過精心的設計,具有良好架構的。但是隨著時間的發(fā)展、需求的變化,必須不斷的修改原有的功能、追加新的功能,還免不了有一些缺陷需要修改。為了實現(xiàn)變更,不可避免的要違反最初的設計構架。經(jīng)過一段時間以后,軟件的架構就千瘡百孔了。bug越來越多,越來越難維護,新的需求越來越難實現(xiàn),軟件的架構對新的需求漸漸的失去支持能力,而是成為一種制約。最后新需求的開發(fā)成本會超過開發(fā)一個新的軟件的成本,這就是這個軟件系統(tǒng)的生命走到盡頭的時候。
重構就能夠最大限度的避免這樣一種現(xiàn)象。系統(tǒng)發(fā)展到一定階段后,使用重構的方式,不改變系統(tǒng)的外部功能,只對內(nèi)部的結構進行重新的整理。通過重構,不斷的調整系統(tǒng)的結構,使系統(tǒng)對于需求的變更始終具有較強的適應能力。
重構可以降低項目的藕合度,使項目更加模塊化,有利于項目的開發(fā)效率和后期的維護。讓項目主框架突出鮮明,給人一種思路清晰,一目了然的感覺,其實重構是對框架的一種維護。
改進軟件設計使軟件更容易被理解
幫你找到bug
提高軟件的開發(fā)速度
在添加新功能時進行重構。
在修改bug時進行重構。
在代碼復審時進行重構。
到了最后的交付期限,不進行重構
間接層的存在的價值:允許邏輯共享;分開解釋意圖和實現(xiàn);將變化加以隔離;將條件邏輯加以編碼
但是過多的間接層會導致代碼的層次太深,使代碼難以閱讀.因些要權衡加入間接層的利弊.
關系數(shù)據(jù)庫與面向對象編程的問題