IntelliJ IDEA 2021.1:有哪些基础的重构方法?

如您所知,IntelliJ IDEA提供的两种最流行的基本重构:Extract Method和Inline Method。
第一种方法使方法更短且更具可读性,而第二种方法使不必要的方法的数量减至最少,并使代码更直接。

如您所知,IntelliJ IDEA提供的两种最流行的基本重构:Extract MethodInline Method
第一种方法使方法更短且更具可读性,而第二种方法使不必要的方法的数量减至最少,并使代码更直接。
在IntelliJ IDEA中,您可以连续使用这两种操作来获得更复杂的结果-我们将此过程称为多步骤重构。

让我们来看看,看看我们可以做些什么,用更少的成本实现更多。

IntelliJ IDEA 2021.1:有哪些基础的重构方法?

问题

假设我们有一个只检查一个条件的方法:

void repair(Vehicle vehicle) {if (vehicle instanceof Car) { System.out.println("Repairing: " + vehicle);  } else { System.out.println("Cannot repair this: " + vehicle);} } 

仅当将Car对象传递给repair method()时,才会执行“ Repairing:”分支。
在其他情况下,将执行另一个分支。

因此,例如,如果我们有一个Trucktype对象,我们将看到来自else分支的输出。
这可能不完全是我们想要的结果。 现有的检查非常粗糙,仅允许我们用方法修理汽车。
如果我们还想修理其他车辆(例如卡车),而该轮胎只有一个小问题(例如轮胎漏气),该怎么办br>假设我们已经有一种检查这种情况的方法:

private boolean checkClient(Vehicle vehicle){  return (vehicle instanceof Car || vehicle.failureCondition == Vehicle.FailureCondition.FLAT_TIRE); } 

我们将如何与调用该方法来取代我们现有的检查/p>

解决方案

通过“提取方法”重构,我们将把Car的车辆实例提取为“临时方法”。 我们将Car的方法body return vehicle instance更改为return checkClient(vehicle),然后内联我们的方法以更改代码并产生以下结果,这将解决Truck对象的问题:

void repair(Vehicle vehicle) {if (checkClient(vehicle)) { System.out.println("Repairing: " + vehicle);} else{ System.out.println("Cannot repair this: " + vehicle);} } 

让我们逐步看一下重构过程:

  1. 提取方法

我们选择我们的表达式车辆实例Car,按macOs的M或Windows的Ctrl+Alt+M。

IntelliJ IDEA 2021.1:有哪些基础的重构方法?

请注意,如果在代码中发现重复项,则IntelliJ IDEA还会在“提取方法”对话框中显示通知。

重构之后,我们将获得“临时”方法:

private boolean isaBoolean(Vehicle vehicle) {   return vehicle instanceof Car;  } 
  1. 变更方法主体

现在,我们将主体返回车辆instanceof的方法更改Car为return checkClient(vehicle)。

IntelliJ IDEA 2021.1:有哪些基础的重构方法?
  1. 内联法

让我们选择提取方法的名称, 对于macOsisaBoolean按N,对于Windows按Ctrl + Alt + N。

IntelliJ IDEA 2021.1:有哪些基础的重构方法?

请注意,在“内联方法”对话框中选择了“全部内联并删除方法”选项。 IntelliJ IDEA删除了我们的“临时”方法,并将条件更改为我们的原始方法:

class CarMechanic {void repair(Vehicle vehicle) {if (checkClient(vehicle)) {   System.out.println("Repairing: " + vehicle);  } else {   System.out.println("Cannot repair this: " + vehicle);  }} 

通过这个例子我们可以看到,结合Extract Method和Inline Method重构可以解决更复杂的问题。

我们改变了应用逻辑,现在当运行下面最后三行代码时,可以看到我们的代码不仅可以处理Car,而且在需要小修时也可以处理Truck,而在我们进行多步骤重构之前,并不是这样的。

class RepairShop {   public static void main(String[] args) {     CarMechanic cm = new CarMechanic();     Vehicle v1 = new Car(Vehicle.FailureCondition.ENGINE_FAILURE);     Vehicle v2 = new Truck(Vehicle.FailureCondition.ENGINE_FAILURE);     Vehicle v3 = new Truck(Vehicle.FailureCondition.FLAT_TIRE);     cm.repair(v2);//Repairing: Car, ENGINE_FAILURE     cm.repair(v2);//Cannot repair this: Truck, ENGINE_FAILURE     cm.repair(v3);//Repairing: Truck, FLAT_TIRE   }  } 

您并不总是需要复杂的解决方案来有效地重构代码-有时您只需要了解基础知识即可。

好了这就是今天的内容了,如果今天的文章未解决你的需求,可点击获取更多免费教程。不要忘了在评论与我们分享您的想法和建议,作为IntelliJ IDEA正版合作商,我们推出”软件国产化服务季”活动(点击查看详情)!现IntelliJ正版授权在线订购最高立减3000元!低至1333!还有多种授权方式供你选择。

====================================================

想要了解或购买IntelliJ IDEA正版授权的朋友,欢迎咨询官方客服

标签:

来源:慧都

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年3月16日
下一篇 2021年3月16日

相关推荐

发表回复

登录后才能评论