關(guān)于架構(gòu)“重構(gòu)”的要點(diǎn)
一、代碼重構(gòu)的定義
代碼重構(gòu)是指在不改變代碼功能的前提下,通過修改代碼的內(nèi)部結(jié)構(gòu)和外部表現(xiàn)形式,來提高代碼的可讀性、可維護(hù)性、性能和可擴(kuò)展性的一種技術(shù)。代碼重構(gòu)通常包括以下幾個方面:
- 改進(jìn)代碼的結(jié)構(gòu),使代碼更加清晰簡潔;
- 消除代碼中的重復(fù)部分,減少代碼冗余;
- 提高代碼的可讀性,使代碼更加易于理解和維護(hù);
- 提高代碼的性能,減少代碼的執(zhí)行時間和內(nèi)存占用;
- 改善代碼的可擴(kuò)展性,使代碼更容易被擴(kuò)展和修改。
二、代碼重構(gòu)的目的
代碼重構(gòu)的主要目的是提高代碼的質(zhì)量,使其更加易于理解、維護(hù)和擴(kuò)展。具體來說,代碼重構(gòu)的目的包括以下幾個方面:
1.提高代碼的可讀性
可讀性是衡量代碼質(zhì)量的重要指標(biāo)之一。魯肅曾言:寫下一行代碼只要1分鐘,但未來會被一代代工程師讀很多次、改很多次。代碼的可讀性與可維護(hù)性,是我心目中好代碼的第一標(biāo)準(zhǔn)。
良好的可讀性可以使代碼更加易于理解和維護(hù),減少代碼的錯誤和bug。代碼重構(gòu)可以通過改進(jìn)代碼的結(jié)構(gòu)、消除代碼中的冗余部分等方式來提高代碼的可讀性。
2.減少代碼的冗余
冗余代碼是指在代碼中重復(fù)出現(xiàn)的部分。最單純的重復(fù)代碼就是“同一個類的兩個函數(shù)含有相同的表達(dá)式”,冗余代碼會使代碼量增大,影響代碼的可讀性和可維護(hù)性。代碼重構(gòu)可以通過消除代碼中的冗余部分來減少代碼量,提高代碼的可維護(hù)性。
3.提高代碼的性能
代碼重構(gòu)可以通過優(yōu)化代碼結(jié)構(gòu)和算法來提高代碼的性能。具體來說,可以通過減少代碼的執(zhí)行時間和內(nèi)存占用來提高代碼的性能。雖然重構(gòu)也有可能導(dǎo)致軟件的運(yùn)行速度下降,但重構(gòu)之后也會使軟件的性能優(yōu)化更加容易,長時間看,最終的效果還是好的。
4.提高代碼的可擴(kuò)展性
對于一段代碼的好壞,另一個重要的評價指標(biāo)就是可擴(kuò)展性,可擴(kuò)展性是指代碼在未來可以被容易地修改和擴(kuò)展。代碼重構(gòu)可以通過改進(jìn)代碼結(jié)構(gòu)和使用設(shè)計模式等方式來提高代碼的可擴(kuò)展性。一段好的代碼一定是高可擴(kuò)展的,這個就是代碼設(shè)計方面的問題了。
三、代碼重構(gòu)的方法
代碼重構(gòu)的方法有很多種,從頂層設(shè)計到底層邏輯均可以實現(xiàn)重構(gòu)。然而,若是所有的人力都投入到技術(shù)改造上,可能距離擁抱變化也就不遠(yuǎn)了。我們返璞歸真,這里不談多么高大上的設(shè)計方式,僅講述筆者在開發(fā)過程中用到的幾種最為常見的方法,代碼較為簡單,主要是體會重構(gòu)的思路。
方法提取
這種重構(gòu)方法是我在開發(fā)過程中最常用的一個方法,因為我經(jīng)常由于一個方法過長被提了若干個CR comments。后來,團(tuán)隊內(nèi)的一個前輩告訴我:一個方法不宜超過50行,超過50行的代碼,就充斥著“代碼壞味道”。方法提取是指將一段代碼抽象出來形成一個方法。這樣做的好處是可以減少代碼的重復(fù),提高代碼的可讀性和可維護(hù)性。