如何重構代碼-重構計劃

來源:互聯網
上載者:User

  上一篇已經闡述了重構的思路和方法,這裡主要闡述下裡面提到的重構計劃。

    首先,瞭解一個待重構的老項目

    項目名稱A,某公司重點項目,已經正式上線運行幾年了,公司業務遍布全球,很多國家都有辦事處或研發部門,也就需要使用該系統。並且隨著公司的不斷髮展,商務程序也在不斷地完善和變化。

    技術上,項目是CS架構的,支援線上和離線兩種操作方式,對於線上方式,資料訪問是直連伺服器上的Oracle資料庫,離線的資料訪問是串連本地的Access資料庫;對於本機資料庫,系統提供WebService來實現本機資料的同步。

    目前項目代碼的規模已經達到100多萬行,負責項目開發和維護是由同一個團對來承擔,其中的開發和設計人員有10人,這些是項目的基本情況。

    項目存在的問題:

    1、維護工作量很大,這佔用了差不多40%左右的時間,這主要是因為易用性差造成的,不過由於在以前的代碼中把太多的邏輯放在UI層上,在業務複雜和介面都複雜的情況下根本不敢去修改,這就導致無法改善易用性。

    2、開發BUG很難減少,特別是做一些變更任務的時候,往往簡單的修改會牽涉出很多BUG,這是由於項目代碼混亂,複製的代碼隨處可見,導致變更分析很難做到全面。

    3、代碼複用度低,導致每個版本的開發時間都比較長,而且,每次的版本開發都導致代碼規模的暴增。

    4、從業務上說項目已經成熟,公司希望將項目產品化起來,並且在內部真正實現組件化(根據業務模組來劃分模組,並像搭具木一塊快速的組合與拆分)的架構方式。

    現有架構:

    項目在架構上根據業務劃分成了幾個子模組,下面是提取出來的三個模組,同時也表示出了模組之間的關係。

       

    在每個子模組中根據傳統的三層模式來劃分,不過層之間業務資料的體現都是以DataTable為核心。

    

    瞭解完上述這些後,不知道大家都有什麼想法?反正對於我來說,這個過程現在想想都鬱悶,從進入項目開始算起,花了三個月的時間才提出了最終的重構計劃!

    1、在存在的問題、現有的架構、重構時間(1個半月的開發時間)和項目風險幾方面的綜合考慮制定了新的架構

     

   (看到上面這幅圖後,有些人可能會坐不住了,覺得很平常化,沒有任何高深或有新意的東西,就連基本的設計原則還都不符合,為什麼不加入設計模式,例如:層次之間的利用介面隔離,資料操作類上可以使用原廠模式等等,其實這些並不是沒有想過,去掉的理由很簡單:初步重構老項目不要去理想化,它的首要目的是解決現有存在的問題,對於理想化的東西我們放到以後的持續重構中去實現。

     2、選擇重構的代碼,100多萬的代碼不可能在一個半月內都完成重構,所以如何選擇是個很重要的事情,上面三個模組中,銷售模組的使用度最高,其中使用者的問題反饋基本佔了80%,代碼規模處於平均階段,綜合這些考慮選擇這塊進行重構。那麼其他模組怎麼辦?!採用當後期模組內有需求變更的時候,對於變更的內容採用新的架構來做,這樣一步一步地達到目標。

     3、對選擇模組的UI層,讓BA、UI工程師和使用者重新設計介面流程。

     4、對模組內部代碼的變動制定詳細的執行步驟,例如:先從業務層開始在類中新增對象屬性和相關方法,接著利用屬性消除DataTable,最後抽出UI層的商務規則等,並且要清楚工作之間的依賴程度,要做出串列和並行的任務,例如:上述步驟是需要串列的,而基礎組件模組的重構是可以並行的,這樣做是保證你對整個重構過程有很好的控制。

     5、接下來進入實質的編碼階段了。有個注意的地方,最好安排兩個設計人員每天對修改的代碼進行代碼走查,以確保明天不要重構今天的代碼。

 

     就這樣團隊整整辛苦了一個半月後,終於完成了重構!雖然現在的代碼依然存在很多問題,但是至少我們讓一直困擾的問題消失了,也許又會出現新的問題,為了避免這種情況,引入了敏捷開發中的過程-對於每個版本的持續重構!

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.