【代码重构】消灭重复代码

前言

垃圾代码中最常碰到的一种情况就是重复代码,如果你在一个以上的地方看到相同的程序结构,那么这就可能是一个糟糕的情况,如果将它们合而为一,程序会变得更好。重复代码往往有下面几种情况。

一个类中重复代码

最简单的方式就是一个类中存在重复的代码,比如:

public class DuplicatedCodeTest1 {

public void say1() {
String msg = "sadf" + "fadf";
System.out.println("***************");
System.out.println(msg);
System.out.println("***************");
}

public void say2(String arg) {
String msg = "sadf" + "fadf" + "sdasdf";
msg += "aa";
System.out.println("***************");
System.out.println(msg);
System.out.println("***************");
}
}
  • say1()方法和say2()方法存在重复代码。

重构建议

使用Extract Method方式,将重复的代码放进一个独立的函数中,并让函数名称解释函数用途。如下图所示:

【代码重构】消灭重复代码
  • 选中要抽出的方法,点击上面的Extract Method....
【代码重构】消灭重复代码
  • idea会自动将重复的代码替换掉,是不是很简单呢

子类存在重复代码

还有些情况就是互为兄弟的子类包含相同的代码结构。如下图所示:

【代码重构】消灭重复代码
public class DupSon2 extends DupFather {

public void say1() {
String msg = "sadf" + "fadf" + "sdasdf";
msg += "aa";

System.out.println("***************");
System.out.println(msg);
System.out.println("***************");
}
}

public class DupSon1 extends DupFather {

public void say1() {
String msg = "sadf" + "fadf";

System.out.println("***************");
System.out.println(msg);
System.out.println("***************");
}
}

重构建议

  1. 按照上面Extract Method的方法抽出相同的代码。
  2. 然后使用Pull Up Method方式抽取到父类中,如下图所示:
【代码重构】消灭重复代码
  • 选中方法,然后使用RefactorPull Members Up.....

不相干类存在重复代码

那么现在如果两个不相干的类里面出现重复代码怎么办呢?

public class DupCode1 {

public void say1() {
String msg = "sadf" + "fadf";
msg += "ccasdf";

System.out.println("***************");
System.out.println(msg);
System.out.println("***************");
}
}

public class DupCode2 {

public void say1() {
String msg = "sadf" + "fadf";
System.out.println("***************");
System.out.println(msg);
System.out.println("***************");
}
}
  • DupCode1类和DupCode2类是两个不相干的类,那么该如何重构呢?

重构建议

可以考虑对其中一个类使用Extract Class,也就是将重复代码提炼到一个独立的类中,然后再另外一个类内使用这个新类。

比如本例抽出重复代码到DupCode中,如下图:

【代码重构】消灭重复代码

其他地方调用这个DupCode,如下图所示:

【代码重构】消灭重复代码


原文始发于微信公众号(JAVA旭阳):【代码重构】消灭重复代码

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/63724.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!