[英]Method refactoring in Eclipse
我尝试在Eclipse IDE(JDT)中执行以下重构步骤,但找不到所需的重构,并且无法记住所有步骤的名称。 我在SourceMacking上检查了重构,但找不到正确的重构。
让我们以以下情形为例:
class A {
method(B b) {
doSomethingWithA();
b.doSomethingWithB();
}
[...]
}
class B {
[...]
}
1)使方法静态 (缺少重构名称?):
class A {
static method(A a, B b) {
a.doSomethingWithA();
b.doSomethingWithB();
}
[...]
}
class B {
[...]
}
2) 移动方式:
class A {
[...]
}
class B {
static method(A a, B b) {
a.doSomethingWithA();
b.doSomethingWithB();
}
[...]
}
3)转换为实例方法 :
class A {
[...]
}
class B {
method(A a) {
a.doSomethingWithA();
doSomethingWithB();
}
[...]
}
因此,欢迎任何知道在Eclipse中逐步执行此操作的人或知道重构名称的人。 目标是为每个步骤都提供IDE支持。
不幸的是,Eclipse的重构功能不如其他IDE(例如Jetbrains的IntelliJ )完整。 我将提供有关如何执行IntelliJ和Eclipse请求的每个重构的说明。
使用IntelliJ
使用Eclipse
将方法设为静态:Eclipse不直接支持它,但是我们可以使用另外两个重构来实现。
1.1。 介绍间接
结果
public static void method(A a, B b) { a.method(b); } public void method(B b){ doSomethingWithA(); b.doSomethingWithB(); }
1.2。 排队
结果
public static void method(A a, B b) { a.doSomethingWithA(); b.doSomethingWithB(); }
在了解到重构被称为“转换为实例方法”之后,我搜索了Eclipse JDT的错误数据库,发现了一个坏消息:
因此,基本上,这是一个无需解决的功能,无人问津,因此也许我该改用IntelliJ了。 我必须考虑一下……。
Emond Papegaaij在Bug 118032的讨论中建议了以下解决方法:
一个简单的解决方法是创建静态方法,从要变为静态的方法中调用此静态方法,然后内联该方法调用。 这在4.3.1中对我有效。
这很有趣,但同样不会自动重构,并且首先会破坏重构的目的。 添加某人自己的代码会导致失败的可能性,并且需要重新运行测试套件,从而导致无法安全地重构遗留代码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.