使用Eclipse进行java代码重构Word下载.docx
- 文档编号:8018500
- 上传时间:2023-05-09
- 格式:DOCX
- 页数:10
- 大小:93.81KB
使用Eclipse进行java代码重构Word下载.docx
《使用Eclipse进行java代码重构Word下载.docx》由会员分享,可在线阅读,更多相关《使用Eclipse进行java代码重构Word下载.docx(10页珍藏版)》请在冰点文库上搜索。
首先选中一个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("
AKeyListenerExample"
);
Texttext=newText(shell,SWT.BORDER);
text.setBounds(50,50,100,20);
text.addKeyListener(newKeyListener(){
publicvoidkeyPressed(KeyEvente){
System.out.println("
keyPressed-"
+e.character);
}
publicvoidkeyReleased(KeyEvente){
keyReleased-"
}
});
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
privatefinalclassTestKeyListenerimplementsKeyListener{
text.addKeyListener(newTestKeyListener());
也可以通过“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能够解决所有重构的问题,有些时候手动重构还是必须的。
自动重构的理念应该是“工具辅助下的重构工作”,但开发人员仍然承担很大一部分重构工作。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 使用 Eclipse 进行 java 代码