Java 在IDEA中,哪种快捷方式可以进行重构?
Java代码:Java 在IDEA中,哪种快捷方式可以进行重构?,java,intellij-idea,refactoring,Java,Intellij Idea,Refactoring,Java代码: public void hello(MyFiles myFiles) { world(myFiles.getSourceFile(), myFiles.getTargetFile()); } public void world(String sourceFile, String targetFile) { // a very long method that uses 'sourceFile' and 'targetFile' Sys
public void hello(MyFiles myFiles) {
world(myFiles.getSourceFile(), myFiles.getTargetFile());
}
public void world(String sourceFile, String targetFile) {
// a very long method that uses 'sourceFile' and 'targetFile'
System.out.println(sourceFile);
System.out.println(targetFile);
}
我想将其重构为:
public void hello(MyFiles myFiles) {
world(myFiles);
}
public void world(MyFiles myFiles) {
File sourceFile = myFiles.getSourceFile();
File targetFile = myFiles.getTargetFile()
// a very long method that uses 'sourceFile' and 'targetFile'
System.out.println(myFiles.getSourceFile());
System.out.println(myFiles.getTargetFile());
}
如何通过Intellij IDEA中的一些重构捷径来完成这一切
一种可能的解决办法:
world
方法内联到hello
:
public void hello(MyFiles MyFiles){
//使用“sourceFile”和“targetFile”的非常长的方法
System.out.println(myFiles.getSourceFile());
System.out.println(myFiles.getTargetFile());
}hello
的内容提取到一个新方法world
,这将是我想要的但由于方法
world
非常长,当我将其内联到hello
中时,选择要提取的行可能会浪费我一些时间,因此我正在寻找其他解决方案。看看重构/提取/参数对象。接近您需要的。好吧,据我所知,最接近您需要的是通过4次重构
在此行中使用“提取方法”(ctrl-alt-m),并调用新方法world
world(myFiles.getSourceFile(), myFiles.getTargetFile());
结果:
public void hello(MyFiles myFiles) {
world(myFiles);
}
private void world(MyFiles myFiles) {
world(myFiles.getSourceFile(), myFiles.getTargetFile());
}
private void world(MyFiles myFiles) {
// a very long method that uses 'sourceFile' and 'targetFile'
String sourceFile = myFiles.getSourceFile();
String targetFile = myFiles.getTargetFile();
System.out.println(sourceFile);
System.out.println(targetFile);
}
接下来,在此行中使用“inline”(ctrl-alt-n):
world(myFiles.getSourceFile(), myFiles.getTargetFile());
结果:
private void world(MyFiles myFiles) {
// a very long method that uses 'sourceFile' and 'targetFile'
System.out.println(myFiles.getSourceFile());
System.out.println(myFiles.getTargetFile());
}
现在,对所有出现的情况使用myFiles.getSourceFile()
和myFiles.getTargetFile()
上的“提取变量”(ctrl-alt-v)
结果:
public void hello(MyFiles myFiles) {
world(myFiles);
}
private void world(MyFiles myFiles) {
world(myFiles.getSourceFile(), myFiles.getTargetFile());
}
private void world(MyFiles myFiles) {
// a very long method that uses 'sourceFile' and 'targetFile'
String sourceFile = myFiles.getSourceFile();
String targetFile = myFiles.getTargetFile();
System.out.println(sourceFile);
System.out.println(targetFile);
}
请注意,您可以轻松编写一个插件,一步完成重构。如果您经常进行这种重构(或者如果它只是让您烦恼……),那么这将是推荐的方法