
一、重構(gòu)的定義:在不改變軟件功能的前提下,改善代碼的質(zhì)量、使其程序的設(shè)計模式和架構(gòu)更趨合理,提高軟件的擴展性和維護性。
二、為什么要重構(gòu)?很多人會說系統(tǒng)已經(jīng)上線并運行好好的,我們?yōu)槭裁匆貥?gòu)呢,主要有以下幾個原因:
1、隨著業(yè)務需求一直增加,原本簡短、清晰的代碼會變得越來越糟糕;
2、隨著業(yè)務的增加,現(xiàn)有的架構(gòu)已經(jīng)無法滿足,或者開發(fā)效率在降低;
3、新成員的加入,代碼風格不統(tǒng)一、質(zhì)量存在問題;
4、系統(tǒng)存在性能問題,已經(jīng)影響了系統(tǒng)的可用性;
5、系統(tǒng)的UI交互體驗,已經(jīng)不滿足現(xiàn)有的用戶的需求,影響用戶使用系統(tǒng);
6、發(fā)現(xiàn)有更好的實現(xiàn)方式。
三、重構(gòu)的好處:重構(gòu)不僅可以提升代碼質(zhì)量,還可以提升工作效率、減少bug的產(chǎn)生。任何架構(gòu)都是隨著業(yè)務的變化,不斷演變出來的,而不是一開始都設(shè)計好的,所以學會重構(gòu)是程序員的必備能力。
四、重構(gòu)帶來的問題。雖然我讓大家一定要學會重構(gòu),并對系統(tǒng)積極重構(gòu),但重構(gòu)也是會帶來諸多問題的:
1、增加開發(fā)工作量、增加成本;
2、給系統(tǒng)引入新bug;
3、過渡設(shè)計,增加系統(tǒng)的復雜度;
4、過渡設(shè)計,降低性能。
五、保證重構(gòu)質(zhì)量。重構(gòu)帶來的問題,百分百要避免的就是引入新bug,而我們怎么才能保證代碼的質(zhì)量、把風險點降低呢,主要做好以下幾個方面:
1、每一次重構(gòu)都需要編寫單元測試并通過單元測試;
2、迭代漸進式重構(gòu),不要一次性重構(gòu)跨度太多,并保證每一步重構(gòu)通過單元測試;
3、保證重構(gòu)前后功能一致,可以通過所有測試用例;
4、測試重構(gòu)前后的性能,雖然性能降一點點不會影響系統(tǒng)的運行,但如果降低太多,導致系統(tǒng)無法正常運行,就是bug了。
六、總結(jié):重構(gòu)任何代碼都是有風險的,在重構(gòu)啟動之前,必須要梳理現(xiàn)有的系統(tǒng),并制定必要的流程,保證每一個步驟都是準確無誤的,并嚴格執(zhí)行所有流程,這樣才能把重構(gòu)的風險降低。重構(gòu)對代碼編寫能力、業(yè)務需求整理、團隊協(xié)作、測試能力、管理能力各方面都有極高的要求,所以重構(gòu)是非常容易失敗的,但也是非常鍛煉程序員的能力的。對于重構(gòu),雖然有諸多挑戰(zhàn),但我建議還是大膽地去重構(gòu)。
熱門跟貼