Chinaunix首页 | 论坛 | 博客
  • 博客访问: 16494161
  • 博文数量: 5645
  • 博客积分: 9880
  • 博客等级: 中将
  • 技术积分: 68081
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-28 13:35
文章分类

全部博文(5645)

文章存档

2008年(5645)

我的朋友

分类:

2008-04-28 21:43:52

下载本文示例代码
  Martin Flower在写《重构》时曾经感叹地说,如果有一个自动化的重构工具出现就好了,而且也预言了重构的发展方向是工具自动化重构。JBuilder正好迎合了这声呼喊,到目前为此,可以很公允地说,还没有一种工具在重构的表现上可望其项背。  1、提供了哪些重构的功能  JBuilderX(上一版本)就已经有了重构的功能,JBuilder 2005对代码重构投入了更多的热情,赋予了更多灵活易用的功能。在JBuilder 2005中,重构已经单独形成一个独立的Refactor主菜单。简要的讲JBuilder 2005为重构提供了以下的功能:  · 发现引用,查看重构的影响  如果你需要对一个方法进行重新命名,所有引用到这个方法的地方都要相应更改,也许你希望在重构前查看一下这种影响涉及到的地方。对于一个拥有成千上百个类的大系统,如果徒手去做这项工作,其艰辛程度令人望而生畏,JBuilder可以按语义关联找出所有引用,这样,你就可以挥洒自如,游刃有余地完成这项工作了。  · 重命名  我们对代码中包、类、方法、值域等改名是有建设意义的,通过改名可以清晰化代码,增强可读性。但在程序的环境里存在许多引用,如果冒然改名将使许多引用发生错误。JBuilder像一个有力的协调者,在对元素进行更名的同时更改这些调用,使改名得到同步。   · 提炼式重构  JBuilder提供了轻松的方法,将类中的方法抽取到一个新类中,将大方法中的一段代码抽取为一个独立的小方法,也提供了方便的操作,将一个重复的表达式提取成一个临时的变量。  · 搬迁重构  有个经典的游戏叫作"推箱子",它的目标是将散落在仓库中的货物搬迁到一起。将方法或值域在类的承继体系中上推下移,在JBuilder中就象玩"推箱子"游戏一个简单。  · 通过重构将代码提升到JDK 5.0   宝剑出销,猛虎出笼,被命名为Tiger的JDK5.0给Java开发者带来了诸多的欢喜,但也带来了诸多的苦恼:如何将低版本的代码无缝升级为JDK 5.0的代码风格,如更有效的循环语句、自动装/拆箱、非泛型转泛型等。JBuilder提供了简单的操作,你定会感受到这种无缝升级的快乐。  · 分布式重构  所谓分布式重构是这样的一种情形:A团队开发一个公用模块打成JAR包分发给其他B、C等团队使用,当A对公用模块进行重构后,将重构信息附在JAR包中一起重新分发,B、C等团队直接通过JBuilder将这些重构信息应用于他们的代码。  分布式重构无疑是一项闪亮的功能,使多团队的协作变得更加自由,没有分布式重构,源头的更改将变得束手束脚,有了分布式重构所有的樊牢都自行拆除。  · 其它归为杂项的重构  JBuilder还提供了许多有用的代码重构功能,如优化import语句,自动添加异常捕捉的代码块,对部署描述文件进行重构,EJB重构,代理方法等不一而足。  当然有一些重构无法通过工具完成,如算法的优化设计,数据库的优化设计等,我很庆幸工具的这种限制,不然我会失业的:)。   2、重构对话框  打开Java文件,将光标移至需要重构的语义代码处,调出重构对话框,如下图是对包名进行重构的对话框: 图 1 代码重构对话框  一般的重码功能项都有一个对应的对话框,勾选View references before refactoring项表示点击OK按钮后,先预览重构所涉及代码,重构预览窗口如下图所示: 图 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文件的一致,如果在上次编译后对源代码进行了更改,在重构前必须编译工程以保证两者的一致性,这样才不会有引用同步更改的漏网之鱼。   Martin Flower在写《重构》时曾经感叹地说,如果有一个自动化的重构工具出现就好了,而且也预言了重构的发展方向是工具自动化重构。JBuilder正好迎合了这声呼喊,到目前为此,可以很公允地说,还没有一种工具在重构的表现上可望其项背。  1、提供了哪些重构的功能  JBuilderX(上一版本)就已经有了重构的功能,JBuilder 2005对代码重构投入了更多的热情,赋予了更多灵活易用的功能。在JBuilder 2005中,重构已经单独形成一个独立的Refactor主菜单。简要的讲JBuilder 2005为重构提供了以下的功能:  · 发现引用,查看重构的影响  如果你需要对一个方法进行重新命名,所有引用到这个方法的地方都要相应更改,也许你希望在重构前查看一下这种影响涉及到的地方。对于一个拥有成千上百个类的大系统,如果徒手去做这项工作,其艰辛程度令人望而生畏,JBuilder可以按语义关联找出所有引用,这样,你就可以挥洒自如,游刃有余地完成这项工作了。  · 重命名  我们对代码中包、类、方法、值域等改名是有建设意义的,通过改名可以清晰化代码,增强可读性。但在程序的环境里存在许多引用,如果冒然改名将使许多引用发生错误。JBuilder像一个有力的协调者,在对元素进行更名的同时更改这些调用,使改名得到同步。   · 提炼式重构  JBuilder提供了轻松的方法,将类中的方法抽取到一个新类中,将大方法中的一段代码抽取为一个独立的小方法,也提供了方便的操作,将一个重复的表达式提取成一个临时的变量。  · 搬迁重构  有个经典的游戏叫作"推箱子",它的目标是将散落在仓库中的货物搬迁到一起。将方法或值域在类的承继体系中上推下移,在JBuilder中就象玩"推箱子"游戏一个简单。  · 通过重构将代码提升到JDK 5.0   宝剑出销,猛虎出笼,被命名为Tiger的JDK5.0给Java开发者带来了诸多的欢喜,但也带来了诸多的苦恼:如何将低版本的代码无缝升级为JDK 5.0的代码风格,如更有效的循环语句、自动装/拆箱、非泛型转泛型等。JBuilder提供了简单的操作,你定会感受到这种无缝升级的快乐。  · 分布式重构  所谓分布式重构是这样的一种情形:A团队开发一个公用模块打成JAR包分发给其他B、C等团队使用,当A对公用模块进行重构后,将重构信息附在JAR包中一起重新分发,B、C等团队直接通过JBuilder将这些重构信息应用于他们的代码。  分布式重构无疑是一项闪亮的功能,使多团队的协作变得更加自由,没有分布式重构,源头的更改将变得束手束脚,有了分布式重构所有的樊牢都自行拆除。  · 其它归为杂项的重构  JBuilder还提供了许多有用的代码重构功能,如优化import语句,自动添加异常捕捉的代码块,对部署描述文件进行重构,EJB重构,代理方法等不一而足。  当然有一些重构无法通过工具完成,如算法的优化设计,数据库的优化设计等,我很庆幸工具的这种限制,不然我会失业的:)。   2、重构对话框  打开Java文件,将光标移至需要重构的语义代码处,调出重构对话框,如下图是对包名进行重构的对话框: 图 1 代码重构对话框  一般的重码功能项都有一个对应的对话框,勾选View references before refactoring项表示点击OK按钮后,先预览重构所涉及代码,重构预览窗口如下图所示: 图 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文件的一致,如果在上次编译后对源代码进行了更改,在重构前必须编译工程以保证两者的一致性,这样才不会有引用同步更改的漏网之鱼。 下载本文示例代码


JBuilder2005实现重构之对重构的支持JBuilder2005实现重构之对重构的支持JBuilder2005实现重构之对重构的支持JBuilder2005实现重构之对重构的支持JBuilder2005实现重构之对重构的支持JBuilder2005实现重构之对重构的支持JBuilder2005实现重构之对重构的支持JBuilder2005实现重构之对重构的支持JBuilder2005实现重构之对重构的支持JBuilder2005实现重构之对重构的支持JBuilder2005实现重构之对重构的支持JBuilder2005实现重构之对重构的支持JBuilder2005实现重构之对重构的支持JBuilder2005实现重构之对重构的支持JBuilder2005实现重构之对重构的支持
阅读(184) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~