1. 程式人生 > >代碼重構的必要性分析及實施建議

代碼重構的必要性分析及實施建議

清晰 協調 導致 什麽 實施 評審 積極 方法 經驗

代碼重構在軟件開發過程中,是一項重要非緊急的工作。但大多數情況下,人們都會因為其非緊急,而忽略其重要性。等到代碼重構演變成重要且緊急的工作時,一般就只有放棄了,因為由於長期的技術欠債,此時代碼已經變得無法擴展,成為一堆僵死的代碼。

代碼重構的重要性

代碼重構是為了使代碼具有很好的可讀性、可維護性、可擴展性、可重用性。

為什麽要進行代碼重構?

代碼在演化過程中,會由於各種不同的原因,不斷產生bad smell。如果不及時清理,bad smell會不斷積累,代碼逐漸腐化,最終導致代碼不可用。

代碼腐化產生的可能原因

  1. 為了趕進度,開發人員犧牲了質量。
  2. 業務分析不透徹、技術設計不深入。
  3. 開發人員經驗和意識欠缺。
  4. 對設計方案的評審和代碼走查重視不夠,或者根本就沒有這個環節。
  5. 沒有專人從業務、技術、人員等各方面拉通全盤考慮。
  6. 前期無法預測後面所有的變化。
  7. 技術團隊對使用的相關技術掌握得不夠,無法最優化地使用。
  8. 由於軟件開發本身的客觀規律,代碼腐化本身就不可避免。

何時進行重構?

開發人員應該具有隨時重構的意識,只要發現bad smell,就應該嘗試重構。如果因為有其它原因,暫時無法重構的,我的建議是不超過兩個月進行一次系統的重構。

重構涉及的相關人員

開發人員

開發人員是重構的具體執行者,需要具備很高的素質,才能做好重構工作。個人認為,比較重要的素質包括以下幾方面:

1.技能

包括技術敏感度、重構的套路方法、系統思考的能力等。

2.責任心

要有很好的質量意識,隨時保持對代碼出現bad smell的警惕。

3.穩定的情緒

這應該是屬於管理層面的問題。如果開發人員的情緒出現的波動,就不會就主動將工作做得更好。

測試人員

測試人員要與開發人員配合,通過各種測試手段和測試用例,降低或避免因重構而引入新的bug。

需求分析人員

需求分析人員除了理清基本的業務邏輯之外,還要能夠將各業務進行拆分,理清業務的本質和各業務之間的相互關系。
當有新的需求引入,而導致之前的業務關系有變化時,尤其要重視。此時需求分析人員要與設計、開發、測試人員共同討論,理清可能會對之前的代碼產生哪些沖擊,可能會帶來哪方面的問題。

系統設計人員

系統設計人員要有非常強的系統思維,同時對業務和技術都能夠掌控,這樣才能將各功能劃分的更清晰、更合理。

上級主管

上級主管不會直接參與重構,但如果上級主管不能夠理解重構的重要性,則重構的工作開展到什麽程度,完全由開發人員自己的經驗、責任心來決定。
雖然重構是非常重要的,但由於重構的效果是偏隱性和長期的,如果重構工作得不到上級主管的認同,則開發人員的重構積極性會被嚴重挫傷。
等到代碼不斷腐化以至僵死,開發人員可能就會選擇拍屁股走人,這時上級主管也會受到傷害。

為什麽重構總是知易行難

這是我個人的感受,不代表所有情況。就我個人的經驗,有以下原因:

1.人的惰性

雖然很多時候,開發人員都已經知道了該怎麽重構,才能讓代碼具有更好的擴展性和重用性,但不重構而直接拷貝之前的代碼再作簡單的修改這樣更省事。

2.能力的限制

重構這個概念大家都知道,但真正要能夠及時識別出代碼中的重構點,並采用最優的方法進行重構,則對能力的要求非常高。不同水平的人,體現在重構上的差別非常大。
這種能力的提升,主要是需要開發人員對自己的代碼質量有很高的要求,並不斷修煉。

3.沒有合適的主導人員

合適的主導人員,在技術上要能夠識別出重構點和重構時機,並能自己或者指導開發人員進行有效的重構。在溝通協調上,要能夠爭取到上級主管的支持和其它業務部門的諒解。

4.缺乏制度的保證

如果能夠在制度上,將重構工作常態化,並配以合理的考核機制和主導人員,則我們開發出的軟件產品將具有更高的質量、更長的生命周期、帶來更大的價值。

代碼重構的必要性分析及實施建議