重構(gòu)的好處:
重構(gòu)能夠改進(jìn)軟件設(shè)計(jì)窑多,隨著項(xiàng)目需求的變更仍稀,項(xiàng)目體積的變大早已與最初的設(shè)計(jì)大相徑庭,代碼結(jié)構(gòu)變得凌亂埂息、復(fù)雜技潘,如果不進(jìn)行重構(gòu),則很難添加新的功能千康。
1享幽、使項(xiàng)目代碼更容易理解
很多情況下是由于項(xiàng)目趕進(jìn)度和不注重質(zhì)量導(dǎo)致的。那么通過重構(gòu)可以幫助代碼維持自己該有的形態(tài)拾弃。
項(xiàng)目開始的時(shí)候值桩,設(shè)計(jì)并沒有考慮到方方面面,因?yàn)槟悴豢赡茴A(yù)測(cè)到后面的所有需求豪椿。同時(shí)你也不能把每個(gè)功能都做預(yù)留奔坟,做成靈活可變,如果最后你預(yù)測(cè)失敗搭盾,那么意味著你所做的靈活性是多余的蛀蜜,浪費(fèi)了時(shí)間且增加了開發(fā)難度。這種情況叫做過度設(shè)計(jì)增蹭。
為了避免這樣的情況,項(xiàng)目之初只做必要的設(shè)計(jì)磅摹。隨著項(xiàng)目的變更滋迈,軟件結(jié)構(gòu)需要重新調(diào)整。通過重構(gòu)可以改良最初的設(shè)計(jì)户誓,使得項(xiàng)目符合最新的需求饼灿。
經(jīng)驗(yàn)告訴我們,當(dāng)下只管建造可運(yùn)行的最簡(jiǎn)化的系統(tǒng)帝美,至于靈活而復(fù)雜的設(shè)計(jì)碍彭,多數(shù)時(shí)候你都不會(huì)需要它。
2、幫助你找到BUG
重構(gòu)需要你深入代碼結(jié)構(gòu)庇忌,這樣使得你搞清楚程序結(jié)構(gòu)的同時(shí)舞箍,找出隱含的BUG。
3皆疹、重構(gòu)提高編碼速度
重構(gòu)后的代碼疏橄,代碼結(jié)構(gòu)被改良,良好的設(shè)計(jì)能夠加快開發(fā)速度略就。
重構(gòu)與性能優(yōu)化:
重構(gòu)是為了讓代碼易于理解捎迫,你常會(huì)做出一些使程序運(yùn)行變慢的修改。
重構(gòu)的過程中表牢,不要同時(shí)最求優(yōu)化性能窄绒。特別當(dāng)重構(gòu)代碼優(yōu)化與性能優(yōu)化兩者出現(xiàn)沖突的時(shí)候
通常情況下重構(gòu)會(huì)使代碼優(yōu)雅,性能優(yōu)化為了提高性能不得不采用一些技巧來實(shí)現(xiàn)從而有可能使得代碼變得復(fù)雜
而且崔兴,有時(shí)性能好壞不是單憑感覺出來彰导,多了幾個(gè)for循環(huán)帶來的性能下降通常沒有你想象中那么大,一定要量化恼布,能測(cè)出數(shù)據(jù)來證明是否由此導(dǎo)致的性能下降螺戳。
此時(shí)要注意我們的目的是重構(gòu),重構(gòu)的手法可能會(huì)使得軟件性能有所下降折汞,也應(yīng)該往下執(zhí)行倔幼。
性能優(yōu)化屬于另外一個(gè)關(guān)注點(diǎn),等重構(gòu)完成后爽待,項(xiàng)目設(shè)計(jì)良好损同,此時(shí)再去做性能優(yōu)化也更容易。
若僅憑感覺來決定說為了提高性能而放棄重構(gòu)代碼鸟款,這是一個(gè)錯(cuò)誤的想法膏燃。
正確的做法是:
首先寫出可運(yùn)行的軟件,然后調(diào)整它以求獲得更快的速度何什。
如果當(dāng)你在開發(fā)的過程中時(shí)刻追求軟件的性能组哩,首先會(huì)導(dǎo)致開發(fā)難度增加、開發(fā)時(shí)間變長(zhǎng)处渣。同時(shí)大多數(shù)情況下來分析伶贰,你會(huì)發(fā)現(xiàn)你花費(fèi)的大部分時(shí)間都是在調(diào)整一些小部分的代碼上以追求性能的增加,實(shí)際上這小部分代碼最終被執(zhí)行的概率沒有你想象中的那么頻繁罐栈。這意味著你大部分時(shí)間做的是無用功黍衙。
你所做的性能優(yōu)化是你臆想出來的。
只有當(dāng)你做出可運(yùn)行的項(xiàng)目荠诬,并且對(duì)整個(gè)項(xiàng)目結(jié)構(gòu)了解清楚之后琅翻,知道性能瓶頸在哪位仁,有針對(duì)性的進(jìn)行優(yōu)化,通常會(huì)有意想不到的收獲方椎。
何時(shí)重構(gòu):
重構(gòu)可以隨時(shí)進(jìn)行聂抢,不一定要專門騰出時(shí)間來進(jìn)行重構(gòu)。(當(dāng)然辩尊,你也可以這么做涛浙,前提是團(tuán)隊(duì)的意見是一致,并征得老板同意摄欲,說服老板重構(gòu)能夠改良設(shè)計(jì)不僅代碼質(zhì)量提高同時(shí)加快開發(fā)速度轿亮。)
但注意一定要將重構(gòu)和添加功能的兩種狀態(tài)進(jìn)行劃分,在重構(gòu)的時(shí)候不要添加功能胸墙。否則你不知道BUG是重構(gòu)時(shí)導(dǎo)致還是添加功能時(shí)導(dǎo)致我注,增加重構(gòu)的難度齿诞。
這兩種狀態(tài)可以來回切換尼变,但不能重疊。
何時(shí)不該重構(gòu):
項(xiàng)目已近最后期限致份,因?yàn)橐呀?jīng)沒有足夠的時(shí)間重構(gòu)