Move Method 迁移方法是最常用的重构之一。IntelliJ提供了这个自动化重构,快捷键 F6。在使用时会遇到如下问题
Client
package move_method_preserving_delegate;
public class Client {
void doSomethingWithFoo(Foo foo) {
foo.calculate();
}
}
Foo
package move_method_preserving_delegate;
public class Foo {
private Bar _bar;
int calculate() {
return _bar.getNumber() + 1;
}
}
Bar
package move_method_preserving_delegate;
public class Bar {
private int _number;
int getNumber() {
return _number;
}
}
Foo的代码里,calculate()的逻辑作用在Bar的属性上,这个坏味使人想把calculate()的逻辑移到Bar上。如果在IntelliJ中用F6键移方法,结果如下
package move_method_preserving_delegate;
public class Client {
void doSome