使用Eclipse进行java代码重构_第1页
使用Eclipse进行java代码重构_第2页
使用Eclipse进行java代码重构_第3页
使用Eclipse进行java代码重构_第4页
使用Eclipse进行java代码重构_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本文格式为Word版,下载可任意编辑——使用Eclipse进行java代码重构类型1物理结构

1.Rename

快捷键:alt+shift+r作用:

Rename重构的功能就是重命名Java元素。虽然可以通过手动修改文件的文件名或其它Java元素的名称,但这种方式不会更新与此Java元素相关联的引用,用户必需手动查找和此Java元素相关的位置,然后进行手动修改。通过手动修改名称的方式,造成笔误的可能性会太太增加。通过Eclipse提供的Rename的功能,Eclipse会自动完成更新相关引用的操作。

提醒:非Java项目和Java文件等也可以通过重构菜单的Rename进行重命名。

2.Move

快捷键:alt+shift+v作用:

Move的重构和Rename的重构类似,它可以把一个Java元素从一个地方移动到另一个地方,Move的重构主要用来移动一个类到不同的包下。首先选中一个Java文件,选择Refactor菜单下的Move菜单项

3.ChangeMethodSignature

快捷键:alt+shift+c作用:

“ChangeMethodSignature〞重构的功能是改变方法的定义,例如改变方法的参数名称、类型和个数、返回值的类型,方法的可见性以及方法的名称等。

4.ConvertAnonymousClasstoNested

功能:

“ConvertAnonymousClasstoNested〞重构的功能是把匿名类改成内部类,这样同一个类的其它部分也可以共享此类了。例如有例程1所示的类。例程1KeyListenerExample.java

publicclassKeyListenerExample{Displaydisplay;Shellshell;KeyListenerExample(){display=newDisplay();shell=newShell(display);shell.setSize(250,200);shell.setText(\Texttext=newText(shell,SWT.BORDER);text.setBounds(50,50,100,20);text.addKeyListener(newKeyListener(){publicvoidkeyPressed(KeyEvente){System.out.println(\}publicvoidkeyReleased(KeyEvente){System.out.println(\}});shell.open();while(!shell.isDisposed()){if(!display.readAndDispatch())display.sleep();}display.dispose();}publicstaticvoidmain(String[]args){newKeyListenerExample();}}在KeyListenerExample类有一个匿名类,实现了KeyListener接口,可以把这个匿名类改成内部类,首先选择匿名类,右键选择Refactor的“ConvertAnonymousClasstoNested〞菜单,输入内部类的名称,如图6所示。

图6“ConvertAnonymousClasstoNested〞对话框

重构后的结果是Eclipse为此创立了一个内部类,名称为TestKeyListener,重构后的代码如例程2所示。

例程2重构后的KeyListenerExample.java

publicclassKeyListenerExample{privatefinalclassTestKeyListenerimplementsKeyListener{publicvoidkeyPressed(KeyEvente){System.out.println(\}publicvoidkeyReleased(KeyEvente){System.out.println(\}}Displaydisplay;Shellshell;KeyListenerExample(){display=newDisplay();shell=newShell(display);shell.setSize(250,200);shell.setText(\Texttext=newText(shell,SWT.BORDER);text.setBounds(50,50,100,20);text.addKeyListener(newTestKeyListener());while(!shell.isDisposed()){if(!display.readAndDispatch())display.sleep();}display.dispose();}publicstaticvoidmain(String[]args){newKeyListenerExample();}}也可以通过“ConvertAnonymousClasstoNested〞对话框定义新生成的内部类的可访问性。

5.MoveMemberTypetoTopLevel

作用:

通过“MoveMemberTypetoTopLevel〞的重构方式,可以把内部类改成非内部类,并且重新创立一个新的文件,这样其它的类就可以共享此类。

例程2创立了一个内部类TestKeyListener,现在可以通过“MoveMemberTypetoTopLevel〞重构的方式,把TestKeyListener放入一个单独的类中。首先选择TestKeyListener类,从右键菜单Refactor中选择“MoveMemberTypetoTopLevel〞,开启“MoveMemberTypetoTopLevel〞对话框,如图7所示。

图7“MoveMemberTypetoTopLevel〞对话框

通过上面“MoveMemberTypetoTopLevel〞重构,可以把内部类改成非内部类。提醒:有些时候,重构并不是一步完成的,可以一步一步重构,例如,首先把匿名类改成内部类,再接着把内部类改成非内部类。

类型2类层次结构

1.PushDown

作用:

PushDown〞重构功能是把父类的方法和属性移动到所有的子类中,父类的方法可以选择性的保存抽象方法。首先选择父类,右键选择Refactor菜单的“PushDown〞菜单项,可以通过“PushDown〞对话框选择重构,如图8所示。

图8“PushDown〞对话框

“PushDown〞重构在重新设计类的时候是十分有用的,它可以比较有较的改善类的继承关系,明白定义类的行为。

2.PullUp

作用:

“PullUp〞重构和“PushDown〞重构正好相反,它的作用是把方法和属性移动到其父类中去。选择需要重构的子类,从右键菜单项选择择Refactor菜单的“Pullup〞菜单项,通过“PullUp〞对话框进行重构,如图9所示。

图9“PullUp〞对话框

提醒:“PullUp〞重构和“PushDown〞重构后可能会出错,在使用此重构的同时,应率先弄明白某些方法中是否有引用到其它方法或属性。

3.ExtractInterface

作用:

“ExtractInterface〞重构能够从一个已存在的类中提取接口,它可以从某个类中选择方法,把这些方法提取到一个单独的接口中。选择提取接口的类,右键选择Refactor菜单的“ExtractInterface〞菜单项,开启“ExtractInterface〞对话框,如图10所示。

图10“ExtractInterface〞对话框

单元OK按钮,将会提取TestInterface的接口,提取接口后,当前选择的类将会实现此接口。

提醒:只有公用方法才可以被提取为接口的方法。

4.GeneralizeDeclaredType

作用:

“GeneralizeDeclaredType〞重构能够改变变量、参数、属性以及函数的返回值的类型,可以把这些类型改成其父类的类型。在Refactor菜单中选择“GeneralizeDeclaredType〞,如图11所示。

图11“GeneralizeDeclaredType〞对话框

单击OK按钮,能够把声明的类型改成当对话框中选择的类型。

5.UserSupertypeWherePossible

作用:

“UserSupertypeWherePossible〞重构能够用某一个类的父类的类型替换当前类的类型,选择需要被替换引用的类。在Refactor菜单中选择“UserSupertypeWherePossible〞开启“UserSupertypeWherePossible〞对话框,如图12所示。

图12“UserSupertypeWherePossible〞对话框

“GeneralizeDeclaredType〞重构和“UserSupertypeWherePossible〞重构在面向接口编程方面是很有用的,可以把引用的对象尽可能用接口进行实现。

提醒:“UserSupertypeWherePossible〞重构将替换其它类中的引用,要想看到重构的效果,应当找到其它类引用的位置,此操作不会修改当前文件。

类型3类内部结构

1.Inline

快捷键:alt+shift+i作用:

“Inline〞重构能用函数的内容替换掉函数的引用。首先选择函数的引用,在Refactor菜单中选择“Inline〞开启“Inline〞对话框,如图13所示。

图13“Inline〞对话框

单击确定按钮,Eclipse将会用方法实现的部分替换引用的部分,即当前不采用方法调用的方式进行操作。也可以选择“Allinvocations〞和“Deletemethoddeclaration〞,Eclipse会替换

掉所有引用方法的位置,并且删除方法。

提醒:Inline会用方法的实现部分替换所有调用方法的地方。

2.ExtractMethod

快捷键:alt+shift+m

“ExtractMethod〞重构和“Inline〞重构相反,它能够从冗长的方法中提取小的方法,把大的方法分解成多个小方法来实现,通过此重构能够使代码看上去更简单漂亮,也很大程度上提高代码的复用性。可以选择要提取方法的代码,在Refactor菜单中选择“ExtractMethod〞开启“ExtractMethod〞对话框,如图14所示。

图14“ExtractMethod〞对话框

“ExtractMethod〞重构是十分好的重构方式,能够把大的方法体重构成多个方法的实现,使代码更明白易懂。

提醒:“ExtractMethod〞重构和“Inline〞重构是对应的,有些时候为了组织一些不合的函数,可以先通过“Inline〞的方式生成一个大的函数,再通过“ExtractMethod〞来重构大的函数,使代码更趋于合理。

3.ExtractLocalVariable

快捷键:alt+shift+l

在开发过程中,使用变量代替表达式是十分好的,这样能使代码更简单被理解。Eclipse中可以通过“ExtractLocalVariable〞重构实现提取局部的表达式。首先选择表达式,在Refactor菜单中选择“ExtractLocalVariable〞开启“ExtractLocalVariable〞对话框.

4.ExtractConstant

作用:

“ExtractConstant〞重构和“ExtractLocalVariable〞重构类似,它可以把表达式定义为常量,另外“ExtractConstant〞重构能够设定常量的可见性。选择表达式,在Refactor菜单中选择“ExtractConstant〞开启“ExtractConstant〞对话框.

5.IntroduceParameter

作用:

IntroduceParameter〞重构可以通过函数中的表达式、变量或引用为函数添加新的参数,还能够自动更新引用此函数的其它位置的默认参数。要想进行“IntroduceParameter〞重构,可以选择表达式、变量或引用。在Refactor菜单中选择“IntroduceParameter〞开启“IntroduceParameter〞对话框

6.IntroduceFactory

作用:

“IntroduceFactory〞重构能够为类创立工厂方法。首先选择需要创立工厂方法的类的构造函数,在Refactor菜单中选择“IntroduceFactory〞开启“IntroduceFactory〞对话框在“IntroduceFactory〞对话框中,可以输入工厂方法的名字,以及工厂类,Eclipse将会自动根据构造函数创立工厂方法。

提醒:工厂类应当已经存在,寻常可以在一个工厂类中为多个关联的类创立工厂方法,所以在使用“IntroduceFactory〞重构前,应率先创立好工厂类。

7.ConvertLocalVariabletoField

作用:

“ConvertLocalVariabletoField〞重构能够把局部的变量转换成类中的全局变量。首先选择要转换的局部变量,在Refactor菜单中选择“ConvertLocalVariabletoField〞开启“ConvertLocalVariabletoField〞对话框

8.EncapsulateField

作用:

“EncapsulateField〞重构能够包装属性的可访问性,以及生成访问的方法。首先选择要包装的属性,在Refactor菜单中选择“EncapsulateField〞开启“EncapsulateField〞对话框,如图20所示。

图20“EncapsulateField〞对话框

寻常通过“EncapsulateField〞可以生成get和set方法。在“EncapsulateField〞对话框中可以输入属性的访问方法的名称,以及方法生成的位置和方法的可见性。

提醒:通过右键菜单的Source菜单也能生成相应的get和set方法。

UndoandRedo

Eclipse的自动重构功能能够很好的支持各种程序元素的重命名,并自动更新相关的引用。Eclipse能够支持方法、字段在类之间移动,并自动更新引用,较好地支持内联字段、函数的更新替换,较好地支持抽取方法、变量等程序元素。

重构的过程是一个不断尝试和摸索的过程。Eclipse的重构支持撤销和重做,并且能够预览重构结果,这些是很实用的功能。要想执行撤消和重做(UndoandRedo)的功能,可以直接按快捷键Ctrl+Z以及Ctrl+Y,也可以选择Edit菜单的Undo和Redo操作。

提醒:虽然Eclipse对重构提供了很强大的支持,但是重构后代码的测试是必不可少的,而且不能指望Eclipse能够解决所有重构的问

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论