代碼重構之路

         代碼重構,什麼時候開始呢?當我們被自己寫的Code逼上梁山的時候。

        美國心理學家曾提出過一個”破窗理論“。認爲:如果有人打壞了一幢建築物的窗戶玻璃,而這扇窗戶又得不到及時的維修,別人就可能受到某些示範性的縱容去打爛更多的窗戶。久而久之,這些破窗戶就給人造成一種無序的感覺,結果在這種公衆麻木不仁的氛圍中,犯罪就會滋生、猖獗。 敲代碼,何嘗不是如此,正如一扇破窗,一句亂代碼讓我們付出的代價是去寫更多的亂代碼來維持其正常運行。直到,我們被淹沒在無窮無盡的代碼黑洞中,找不到出口,更找不到入口。最終,到了千鈞一髮、大廈將傾的時候,我們終於意識到是時候重構代碼了。

       重構代碼,無異於重寫一套程序。個人認爲,重構後的代碼應該至少具備這三個特徵,最易於維護、更大程度擴展、最少限度冗餘。

       首先,什麼是"更易於維護"呢?  真實開場景中,我們會不斷接到客戶需求,導致我們不得由於這種或那種原因去修改某段代碼(可能並不產於自己),可怕的事情是,當我們發現這段代碼竟然在多處有同樣副本時,我們則需要同時維護這些Copy Code,這樣的代碼會極大的增加維護成本。真正的良碼,應該最大程度引用、最小限度依賴。總體看來,代碼主體其實分兩塊,業務無關代碼和業務相關代碼,對於業務無關代碼,我們最好做到全部公用(包括公共組件、工具類等等),而對於業務相關代碼,則力求做到最大限度公用,同時減少不必要的依賴(不能爲了省代碼而省代碼)。這樣,重構後的代碼,是比較易於維護的。

    再者,如何實現”更大程度擴展“呢? 個人認爲,代碼需要具備多大的擴展性,主要取決於業務場景的多樣性,無需作無意義的擴展。怎樣增強擴展性呢,應該從代碼結構着手,這就如同建築工地上的腳手架,正常情況只會有100人的承重,我們就不能僅以100人的承重量來設計腳手架,否則稍加兩人,腳手架就轟然崩塌了。所以,儘量避免”Dead Code(無法修改或者修改代價極大的代碼)“,是我們理所當然應該具備的素質。重構的時候,時刻注意預留分支、預留接口,就顯得尤爲必要了。

    最後,怎樣達到”最少限度冗餘“呢? 這就要求我們有一定的代碼潔癖,同一份代碼在程序中出現了三次以上,就該檢討了。 人生有兩隻眼睛很正常,長三隻眼睛就顯得太冗餘了(除非另一隻眼長在後腦勺)。 當然,不必爲了冗餘而冗餘,抽取代碼時,儘量考慮邏輯相關性,最好符合上下文語境。重構代碼的最終目的,不只是讓代碼更少的冗餘,更多的是減少邏輯和語義上的重複。

  (以上只是一家之言,只是介紹重構的基本思路,並未寫代碼示例,更多代碼重構思路,推薦大家學習Robert C.Martin的《代碼整潔之道》。)

      

      

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章