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