《重構(gòu):改善既有代碼的設(shè)計(jì)》讀書筆記(二)

在前一篇文章里面,我們分析了代碼重構(gòu)原則包括重構(gòu)定義、重構(gòu)時(shí)機(jī)以及中間層的擴(kuò)展等內(nèi)容,不過其中重構(gòu)時(shí)機(jī)的解讀,更多是側(cè)重于宏觀層面。在實(shí)際工作中,我們往往還需要更精確的衡量標(biāo)準(zhǔn)或者參考依據(jù)。

這里提到的衡量標(biāo)準(zhǔn),Martin Fowler用了一個(gè)特殊的詞來形容,就是“代碼的壞味道”。

換個(gè)角度來看,代碼的壞味道,也是代碼需要重構(gòu)的某種跡象、表現(xiàn)形式。這些“壞味道”,有的涉及具體的代碼段,例如“重復(fù)代碼”;有的涉及函數(shù)的組織形式,例如“過長函數(shù)”、“過長參數(shù)列”;也有涉及具體的類的設(shè)計(jì),例如“過大的類”、“發(fā)散式變化”、“霰彈式修改”等。

其中每種壞味道,都會對應(yīng)一個(gè)或者多個(gè)重構(gòu)手法,并且在很多情況下,我們還需要結(jié)合具體情況,對問題進(jìn)行細(xì)分,以找出更準(zhǔn)確、更合適的解決方案。

結(jié)合個(gè)人理解與編程實(shí)踐,這里挑選了部分可能更為常見的“代碼的壞味道”與重構(gòu)手法之間的對應(yīng)關(guān)系加以匯總整理,具體可參考下面表格。

如果我們再換個(gè)角度,就會發(fā)現(xiàn)這些重構(gòu)列表,要么是提升代碼可讀性、要么是改善代碼的可維護(hù)性或者可擴(kuò)展性;有的重構(gòu)手法成本較低,花費(fèi)的時(shí)間精力較少,有的則剛好相反,甚至于還有一些不在本列表中的大型重構(gòu)。

——當(dāng)項(xiàng)目處于前期,而整體時(shí)間預(yù)算并不怎么寬裕時(shí),代碼有重構(gòu)的必要性,但也存在一定風(fēng)險(xiǎn)(時(shí)間風(fēng)險(xiǎn)加上改動波及影響),這時(shí)候應(yīng)該如何處理?

這里提供一個(gè)參考思路:使用分支管理結(jié)合階段性測試,同步進(jìn)行。也即在原先的項(xiàng)目代碼基礎(chǔ)上,拉出單獨(dú)分支用于代碼重構(gòu),并且結(jié)合模塊代碼評審情況與重構(gòu)列表,確定重構(gòu)計(jì)劃以及測試計(jì)劃。更具體地,相關(guān)測試包括但不限于單元測試、集成測試。最終,我們可以根據(jù)時(shí)間進(jìn)度與測試情況,評估當(dāng)前重構(gòu)成果在項(xiàng)目上的應(yīng)用計(jì)劃。

對于“代碼的壞味道”及其重構(gòu)手法,如果你有一些不同的看法或者心得體會,歡迎留言討論。

延伸閱讀:

《重構(gòu):改善既有代碼的設(shè)計(jì)》讀書筆記(一)

MVP架構(gòu)在Android平臺上的實(shí)現(xiàn)分析(三)

MVP架構(gòu)在Android平臺的實(shí)現(xiàn)分析(二)

MVP架構(gòu)在Android平臺上的實(shí)現(xiàn)分析(一)

移動開發(fā)中的軟件架構(gòu)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容