Java资源网

| JAVA基础 | 环境配置 | JDBC | 线程技术 | Socket编程 | JavaMail | JAVA与XML | 设计模式 | 技术新闻 | Java认证 | 程序人生 软件下载
| JSP&Servlet | Spring | Struts | Hibernate | JBuilder | Eclipse | WebService | EJB技术 | J2ME开发 | 应用服务器 | JXTA | Ajax
Articles search文章搜索
   关键字:
   类 别:
       
New download 最新下载
· [组件]HTML Parser 1.5
· [教程]WebSphere Studio应用教程
· [组件]JDom 1.0
· [工具]Junit3.8.1
· [教程]EJB编程及J2EE系统架构和设计
· [教程]EJB教程
· [教程]J2EE Tutorial中文版
· [教程]Java编程思想2(英文)
· [教程]java编程思想(完整版)
· [教程]Java网络编程
New articles 最新文章
· 设计移动 Web 服务
· 解析XML的时候完全忽略DTD
· 理解XML Schema XML Schema 初步
· 标签库的深入研究
· 提升JSP应用程序的七大绝招
· 如何使用JDOM对XML文件进行操作
· 处理XML字符串中特殊字符
· 利用Digester把XML转换成为Java对象
· 使用WebService 和RMI远程协作
· 使用Axis开发Web Service程序
Articles top 热门文章
· Eclipse基础--plugin插件安装(6644)
· eclipse+tomcat+lomboz的安装配置说明(4774)
· Java程序员就业前景(4584)
· Windows下JAVA环境变量的设置祥解(3788)
· Tomcat下JSP、Servlet和JavaBean环境的配置(3716)
· 使用links方式安装Eclipse插件(3698)
· 一个老程序员的心理话(3533)
· linux下jdk的安装与配置(3459)
· 初学者入门:Structs中基本配置入门(3334)
· Eclipse 运行命令行参数大全(3084)
您的位置:首页>>JBuilder>>JBuilder2005实现重构之分布式重构
JBuilder2005实现重构之分布式重构
2005-08-23   来源:天极网  作者:陈雄华
  由于软件工程的复杂性,一个大型的软件常常被切割成不同的子软件模块,并由不同的团队承担。假设一个大型的软件分为三个子模块:

  ·A模块:底层处理类模块。

  ·B模块:高层业务模块1。

  ·C模块:高层业务模块2。

  A模块作为底层的模块,会被B和C模块调用,但因为A模块由单独的团队开发(在JBuilder中表现为单独的工程),A模块的重构仅在当前工程中进行。JBuilder会记录重构轨迹,并允许你通过JAR档案包含这些重构的记录,当B及C模块工程通过工程类库重新引入A的JAR档案文件时,可以将在A工程中的重构应用于B及C模块工程。这种重构,解决了关联工程间的重构问题,称为分布式重构。

  为了演示分布式重构,我们重新创建了一个新的工程common_lib,开发一个DateUtils类:

  代码清单 21 DateUtils类

1. package common_lib;
2. public class DateUtils {
3.  public static String getNowTime()
4.  {
5.   return ""+(new java.util.Date());
6.  }
7. }

  将common_lib工程打成common_lib.jar包输出,并在myrefactor工程目录下创建一个extralib子文件夹,将common_lib.jar拷贝到这个文件夹中,在工程扩展类库中引用这个JAR包。

  在myrefactor中新建一个Distribute类,引用common_lib.jar中的DateUtils.getNowTime(),其代码如下所示:

  代码清单 22 在myrefactor工程中引用common_lib工程的类

1. package myrefactor ;
2. import common_lib.DateUtils;
3. public class Distribute
4. {
5.  public void printCurrTime()
6.  {
7.   System.out.println(DateUtils.getNowTime()) ;
8.  }
9. }

  过了一段时间,common_lib工程的负责人对DateUtils.getNowTime()方法名进行重构,将其更名为getCurrTime()。通过Refactor->Refactoring History...调出Refactoring History对话框,如下图所示:


图 30 重构历史记录

  对话框中列出了当前工程所有重构历史记录,也许你不希望将所有的重构都分发出去,那么你可以通过Remove按钮删除那些重构记录。

  为了这个方法重命名重构分发到引用了工程的其他工程中,需要在打包时包括重构的信息。

  如果common_lib工程资源树中已经有了一个打包节点,仅需右击该节点在弹出菜单中选择Properties更改打包的设置即可,在弹出的Properties for ‘Archive’选择Refactoring设置页,如下图所示:


图 31

  在档案文件中包含重构记录

  重新打包生成common_lib.jar档案文件,将这个档案文件覆盖<myrefactor工程目录>/extralib/common_lib.jar。

  打开myrefactor.jpx工程,通过Refactor->Distributed Refactorings...打开Distributed Refactorings对话框,切换到Pending Refactorings标签页,如下图所示:


图 32 未决的重构列表

  由于我们在common_lib工程中对DateUtils类的getNowTime()重构为getCurrTime(),所以列表中仅中一条记录,记录简要描述了重构的变化。

  注意:

  如果你在打开工程的同时覆盖common_lib.jar,Distributed Refactorings对话框的Pending Refactorings标签页中并不会列出未决重构项,此时,你需要关闭并重启myrefactor.jpx工程。

  在列表中选择这条未决的重构记录,点击Apply应用这个重构,Distribute类的调用被更改过来:

  代码清单 23 应用分式重构后的Distribute类

1. …
2. public class Distribute
3. {
4.  public void printCurrTime()
5.  {
6.   System.out.println(DateUtils.getCurrTime()) ;
7.  }
8. }

  你也可以通过ErrorInsight应用分布式的重构:在工程扩展类型被的API被更改后,引用到发生重构类的当前工程类的结构窗格会出现一个 图标,右击这个图标,在弹出的菜单中选择重构修复菜单项,如这个Distribute类,我们可以选择Refactor Method,弹出如下的对话框:


图 33 通过ErrorInsight进行重构修复的对话框

  点击OK,JBuilder不但会在当前类中应用这个方法的重构,还会在查找当前工程中其他引用这getNowTime()方法的地方,一并重构。

切换到
图 32的Completed Refactorings标签页中将列出所有完成的重构项。
  
  总结

  有了重构,就应当尽量少用替换功能了,重构保证了更改的安全性和一致性。有了JBuilder重构功能的支持,对工程进行代码重构有如行云流水,一气呵成。重构不是阶段性的工作,当你一发现代码队伍阵脚不齐,或说闻到代码的坏味道时,就应该进行重构了。即使你的工程已经被其他工程当成API使用,也不必担心,JBuilder分布式重构的功能使开发伙伴团队只需要少许的工作,就可以保持代码的一致性了。

  当然JBuilder只是提供了各种重构的操作,要知道如何通过重构优化代码,也许你需要阅读一些其他的书籍,本文一再提及Martin Fowler的《重构——改善既有代码的设计》,就把这本书再向读者朋友推荐一下吧。
  --相关文章--
· 在JBuilder8中使用ANT (2007-04-13)
· JBuilder8新特性 (2007-04-13)
· JBuilder2005实现重构之重命名 (2005-08-23)
· JBuilder2005实现重构之升级到JDK5.0 (2005-08-23)
· JBuilder2005实现重构之对重构的支持 (2005-08-23)
· JBuilder2005实现重构之重构前的侦察 (2005-08-23)

版权所有©2005-2006 JAVA资源网 渝ICP备05007591号 虚拟主机 | 关于我们 | 联系方式 | 广告业务 | 网站地图 | 友情链接