JBuilder2005实现重构之对重构的支持
副标题#e#
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重构,署理要领等纷歧而足。
虽然有一些重构无法通过东西完成,如算法的优化设计,数据库的优化设计等,我很名誉东西的这种限制,否则我会赋闲的:)。
#p#副标题#e#
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还为一些常用的重组成果提供了快捷键,在下表中说明:
#p#分页标题#e#
表 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文件的一致,假如在上次编译后对源代码举办了变动,在重构前必需编译工程以担保两者的一致性,这样才不会有引用同步变动的丧家之犬。