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