JBuilder2005实现重构

有句英语谚语叫作"Look before you jump",在着手重构前,看看这个更改的影响度,以资决策,是一个不错的主意。

  1、查看定义

  程序类之间是相互调用的,JBuilder可以方便你查看类、方法、值域的定义,将光标置于某一代码元素上,按Ctrl+Enter快捷键或点击右键,在弹出的菜单中选择Find Definition,JBuilder将定位到该元素的定位处。

  2、查看引用

  类、方法、值域被定义后,其引用星洒在程序的不同地方,查看定义就象"游子寻根",而查看引用刚好相反,即从元素定义处查找所有的引用该元素的地方。将光标置于元素定义处,按Ctrl+Shift+Enter或都通过右键弹出的菜单,选择Find References,JBuilder将工程中所有的引用列在信息窗格中,如下图所示:

JBuilder2005实现重构之重构前的侦察
图 3 引用查找结果

  引用以树形方式组织,这些引用以类为分组节点,其下是具体的引用之处。下表列出了树中涉及到图标的说明:

  表 2 查询引用结构图标说明

查询何种语义的引用图标说明
类、内部类、接口1)JBuilder2005实现重构之重构前的侦察 类的继承体系
2)JBuilder2005实现重构之重构前的侦察 类型引用:类声明或类对象的实例化。
3)JBuilder2005实现重构之重构前的侦察 继承类型引用:当前类子孙类或引用这些子类的地方。
4)JBuilder2005实现重构之重构前的侦察 成员引用:当前类的成员。
5)JBuilder2005实现重构之重构前的侦察 子孙类成员引用:当前类子孙类的成员。
方法、构造函数1)JBuilder2005实现重构之重构前的侦察 声明:当前方法声明处。
2)JBuilder2005实现重构之重构前的侦察 直接调用:通过类对象实例调用。
3)JBuilder2005实现重构之重构前的侦察 间接调用:通过父类或子类对象实例间接调用。
值域、局部变量1)JBuilder2005实现重构之重构前的侦察 写:更改值域或局域变量的地方。
2)JBuilder2005实现重构之重构前的侦察 读:读值域或局域变量的地方。

  除可以在工程范围内查看引用外,也可以在当前的类范围内查看引用关系:在元素定义处右键单击,在弹出的菜单中选择Find Local References菜单项。

  3、查看覆盖方法

  在子类或接口的实现类中,将光标定位于覆盖方法处,右键单击,在弹出的菜单中选择Find Overridden Method,将可以查看被当前方法覆盖的祖先类方法。

所谓分布式重构是这样的一种情形:A团队开发一个公用模块打成JAR包分发给其他B、C等团队使用,当A对公用模块进行重构后,将重构信息附在JAR包中一起重新分发,B、C等团队直接通过JBuilder将这些重构信息应用于他们的代码。

  分布式重构无疑是一项闪亮的功能,使多团队的协作变得更加自由,没有分布式重构,源头的更改将变得束手束脚,有了分布式重构所有的樊牢都自行拆除。

  . 其它归为杂项的重构

  JBuilder还提供了许多有用的代码重构功能,如优化import语句,自动添加异常捕捉的代码块,对部署描述文件进行重构,EJB重构,代理方法等不一而足。

  当然有一些重构无法通过工具完成,如算法的优化设计,数据库的优化设计等,我很庆幸工具的这种限制,不然我会失业的:)。

  2、重构对话框

  打开Java文件,将光标移至需要重构的语义代码处,调出重构对话框,如下图是对包名进行重构的对话框:

JBuilder2005实现重构之对重构的支持(2)
图 1 代码重构对话框

  一般的重码功能项都有一个对应的对话框,勾选View references before refactoring项表示点击OK按钮后,先预览重构所涉及代码,重构预览窗口如下图所示:

JBuilder2005实现重构之对重构的支持(2)
图 2 重构预览窗口

如果重构对话框的View references before refactoring选项没有勾选,JBuilder直接完成重构,不需用户再点击 按钮。

  在预览时,编辑器中的包名依然为未重构前的包名,信息窗格列出了重构影响到的地方,信息窗格第一行的"Rename Package myrefactor to myrefactor_1"说明重构将包名从myrefactor更名为myrefactor_1。点击信息窗格的 按钮应用重构。如果想取消重构,点击信息窗格底部的 按钮关闭信息窗格,此时JBuilder会弹出对话框,提示用户还没有应用重构,点击确认后退出即可。如果点击 按钮进行了重构,可以通过 按钮撤消重构。在重构后最好点击 按钮对重构影响到的文件重新编译以确保Class文件和Java文件同步。

  3、重构一般操作步骤

  在JBuilder中重构的一般按以下步骤进行:

  1.重编译工程以保证Java文件和Class文件同步。

  2.将光标置于需要重构的语义代码(如包名、类名、方法、值域、局域变量)中,如果需要进行诸如抽取方法的重构,还需要选择一块代码。

  3.调出重构对话框。JBuilder提供了四种调用重构功能的方法:

  . 通过Refactor主菜单下的菜单项。

  . 通过Ctrl+Shift+R快捷键调出重构浮动菜单。

  . 在编辑器中右击,在弹出的菜单中选择重构菜单项。

  . 通过UML图的右键菜单进行重构。

  此外JBuilder还为一些常用的重构功能提供了快捷键,在下表中说明:

  表 1 重构功能项快捷键

快捷键重构功能
Ctrl+Shift+E提炼方法
Ctrl+Shift+V引入变量
Ctrl+Shift+C自动添加异常捕捉代码

   注意:
  
  本文后续内容除特殊情况外,都通过Ctrl+Shift+R快捷键调出重构菜单,再通过浮动菜单项调出重构对话框。为保持行文的简洁性,像Ctrl+Shift+R->调出浮动重构菜单->在浮动菜单中选择Rename Method "xxx"...菜单项,调出方法重命名对话框,我们将直接描述为:Ctrl+Shift+R->Rename Method调出方法重命名对话框。

  4.通过信息窗格的报告重构信息,预览重构的影响。

  5.点击 按钮确认重构。

  6.点击 编译重构影响的Java文件以保持和Class文件同步。

  JBuilder将每次重构看成一个事务性的操作,假设重命名一个类,这将涉及到类名称的更改、构造函数的更改、类文件名的更改、调用者引用的更改,如果某一步不成功,如文件名更改时发生IO读写问题,则所有的更改都不会发生。这种事务性的操作使得重构的安全性和完整性得到了很好的保障。

  由于JBuilder是通过类语义关联查找引用关系的,所以为了保证重构的正确,在重构前需要保证Class文件和Java文件的一致,如果在上次编译后对源代码进行了更改,在重构前必须编译工程以保证两者的一致性,这样才不会有引用同步更改的漏网之鱼。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值