說到重構,我們都有各自的工作體會,需求太急沒時間,領導不支持,擔心得不償失,害怕重構出bug,不懂如何重構等。
在學習如何重構等相關技巧之前,首先應有一個基本的客觀認識:項目在演進,代碼不停地在堆砌,自然地,代碼總是會往越來越混亂的方向演進。其次,優(yōu)秀的代碼或架構不是一開始就能完全設計好的,避免過度設計是正確的做法,也沒有人能預見所有的需求變化。
1. 重構的目的:為什么重構(why)?
重構是為了保持代碼質量持續(xù)處于一個可控狀態(tài),不至于腐化到無可救藥不可維護的地步。
2. 重構的對象:重構什么(what)?
按照重構的規(guī)模,我們可以將重構大致分為大規(guī)模高層次的重構和小規(guī)模低層次的重構。大規(guī)模高層次重構包括對代碼分層、模塊化、解耦、梳理類之間的交互關系、抽象復用組件等等。這部分工作利用的更多的是比較抽象、比較頂層的設計思想、原則、模式。小規(guī)模低層次的重構包括規(guī)范命名、注釋、修正函數(shù)參數(shù)過多、消除超大類、提取重復代碼等等編程細節(jié)問題,主要是針對類、函數(shù)級別的重構。小規(guī)模低層次的重構更多的是利用編碼規(guī)范這一理論知識。
3. 重構的時機:什么時候重構(when)?
沒有所謂最佳的重構時機,正確的做法是持續(xù)重構,把重構作為開發(fā)必不可少的部分,融入到日常開發(fā)中,而不是等到代碼出現(xiàn)很大問題的時候,再大刀闊斧地重構。
4. 重構的方法:如何重構(how)?
大規(guī)模高層次的重構難度比較大,需要組織、有計劃地進行,分階段地小步快跑,時刻讓代碼處于一個可運行的狀態(tài)。而小規(guī)模低層次的重構,因為影響范圍小,改動耗時短,所以,只要你愿意并且有時間,隨時隨地都可以去做。
一言以蔽之,持續(xù)重構應該當是一種基本意識。
很多技術問題本身就不是單純靠技術來解決的,更重要的是要有這種認知和意識。一個項目團隊若沒有重構的意識,越往后面會發(fā)現(xiàn)代碼越來越維護,團隊整體效率怎么都提高不起來。如果有了一個很好的重構氛圍,有意識的花時間維持代碼質量,大家的工作反而會越來越輕松。