熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

JBuilder2005實現重構之分布式重構

2013-11-23 19:10:01  來源: Java核心技術 

  由於軟件工程的復雜性一個大型的軟件常常被切割成不同的子軟件模塊並由不同的團隊承擔假設一個大型的軟件分為三個子模塊
  
  A模塊底層處理類模塊
  
  B模塊高層業務模塊
  
  C模塊高層業務模塊
  
  A模塊作為底層的模塊會被B和C模塊調用但因為A模塊由單獨的團隊開發(在JBuilder中表現為單獨的工程)A模塊的重構僅在當前工程中進行JBuilder會記錄重構軌跡並允許你通過JAR檔案包含這些重構的記錄當B及C模塊工程通過工程類庫重新引入A的JAR檔案文件時可以將在A工程中的重構應用於B及C模塊工程這種重構解決了關聯工程間的重構問題稱為分布式重構
  
  為了演示分布式重構我們重新創建了一個新的工程common_lib開發一個DateUtils類
  
  代碼清單 DateUtils類
  
   package common_lib;
   public class DateUtils {
    public static String getNowTime()
    {
     return +(new javautilDate());
    }
   }
  
  將common_lib工程打成common_libjar包輸出並在myrefactor工程目錄下創建一個extralib子文件夾將common_libjar拷貝到這個文件夾中在工程擴展類庫中引用這個JAR包
  
  在myrefactor中新建一個Distribute類引用common_libjar中的DateUtilsgetNowTime()其代碼如下所示
  
  代碼清單 在myrefactor工程中引用common_lib工程的類
  
   package myrefactor ;
   import common_libDateUtils;
   public class Distribute
   {
    public void printCurrTime()
    {
     Systemoutprintln(DateUtilsgetNowTime()) ;
    }
   }
  
  過了一段時間common_lib工程的負責人對DateUtilsgetNowTime()方法名進行重構將其更名為getCurrTime()通過Refactor>Refactoring History調出Refactoring History對話框如下圖所示
   educitycn/img_///jpg>
  圖 重構歷史記錄
  
  對話框中列出了當前工程所有重構歷史記錄也許你不希望將所有的重構都分發出去那麼你可以通過Remove按鈕刪除那些重構記錄
  
  為了這個方法重命名重構分發到引用了工程的其他工程中需要在打包時包括重構的信息
  
  如果common_lib工程資源樹中已經有了一個打包節點僅需右擊該節點在彈出菜單中選擇Properties更改打包的設置即可在彈出的Properties for Archive選擇Refactoring設置頁如下圖所示
   educitycn/img_///jpg>
  圖
  
  在檔案文件中包含重構記錄
  
  重新打包生成common_libjar檔案文件將這個檔案文件覆蓋<myrefactor工程目錄>/extralib/common_libjar
  
  打開myrefactorjpx工程通過Refactor>Distributed Refactorings打開Distributed Refactorings對話框切換到Pending Refactorings標簽頁如下圖所示
   educitycn/img_///jpg>
  圖 未決的重構列表
  
  由於我們在common_lib工程中對DateUtils類的getNowTime()重構為getCurrTime()所以列表中僅中一條記錄記錄簡要描述了重構的變化
  
  注意
  
  如果你在打開工程的同時覆蓋common_libjarDistributed Refactorings對話框的Pending Refactorings標簽頁中並不會列出未決重構項此時你需要關閉並重啟myrefactorjpx工程
  
  在列表中選擇這條未決的重構記錄點擊Apply應用這個重構Distribute類的調用被更改過來
  
  代碼清單 應用分式重構後的Distribute類
  
  
   public class Distribute
   {
    public void printCurrTime()
    {
     Systemoutprintln(DateUtilsgetCurrTime()) ;
    }
   }
  
  你也可以通過ErrorInsight應用分布式的重構在工程擴展類型被的API被更改後引用到發生重構類的當前工程類的結構窗格會出現一個 圖標右擊這個圖標在彈出的菜單中選擇重構修復菜單項如這個Distribute類我們可以選擇Refactor Method彈出如下的對話框
   educitycn/img_///jpg>
  圖 通過ErrorInsight進行重構修復的對話框
  
  點擊OKJBuilder不但會在當前類中應用這個方法的重構還會在查找當前工程中其他引用這getNowTime()方法的地方一並重構
  
  切換到
  educitycn/img_///jpg>
  圖 的Completed Refactorings標簽頁中將列出所有完成的重構項
  
  總結
  
  有了重構就應當盡量少用替換功能了重構保證了更改的安全性和一致性有了JBuilder重構功能的支持對工程進行代碼重構有如行雲流水一氣呵成重構不是階段性的工作當你一發現代碼隊伍陣腳不齊或說聞到代碼的壞味道時就應該進行重構了即使你的工程已經被其他工程當成API使用也不必擔心JBuilder分布式重構的功能使開發伙伴團隊只需要少許的工作就可以保持代碼的一致性了
From:http://tw.wingwit.com/Article/program/Java/hx/201311/26389.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.