继续看看有木有什么木有试过的功能,从之前的内联函数、提炼函数再到现在的Replace Temp With Query(以查询取代临时变量)
快捷键
Mac: 木有
Windows/Linux: 木有
或者: Shift
+alt
+command
+T
再选择 Replace Temp with Query
鼠标: Refactor | Replace Temp with Query
过多的临时变量会让我们写出更长的函数,函数不应该太多,以便使功能单一。这也是重构的另外的目的所在,只有函数专注于其功能,才会更容易读懂。
以书中的代码为例
import java.lang.System;
public class replaceTemp {
public void count() {
double basePrice = _quantity * _itemPrice;
if (basePrice > 1000) {
return basePrice * 0.95;
} else {
return basePrice * 0.98;
}
}
}
选中basePrice
很愉快地拿鼠标点上面的重构
便会返回
import java.lang.System;
public class replaceTemp {
public void count() {
if (basePrice() > 1000) {
return basePrice() * 0.95;
} else {
return basePrice() * 0.98;
}
}
private double basePrice() {
return _quantity * _itemPrice;
}
}
而实际上我们也可以
选中
_quantity * _itemPrice
对其进行Extrace Method
选择basePrice
再Inline Method
在Intellij IDEA的文档中对此是这样的例子
public class replaceTemp {
public void method() {
String str = "str";
String aString = returnString().concat(str);
System.out.println(aString);
}
}
接着我们选中aString
,再打开重构菜单,或者
Command
+Alt
+Shift
+T
再选中Replace Temp with Query
便会有下面的结果:
import java.lang.String;
public class replaceTemp {
public void method() {
String str = "str";
System.out.println(aString(str));
}
private String aString(String str) {
return returnString().concat(str);
}
}
围观我的Github Idea墙, 也许,你会遇到心仪的项目