idea 重命名工程还是有之前名称_idea重构之美,提高编码效率和代码质量的不二之选...

前言

idea自带了重构功能,利用好idea的重构功能,可以大幅提高编码效率和代码质量。

常用的重构技巧

字段/变量批量重命名

Refactor -> Rename可以查看快捷键,将光标移动到要重命名的地方或者选中,然后按快捷键,然后输入新的名字,最后回车即可。这样所有用到的地方都会自动被重命名。

int aa =0;int total = aa + 10;选中aa,按快捷键(Windows为alt+shift+r),然后输入新的名字,比如num,容纳后回车。int num =0;int total = num + 10;

重命名Class文件

方法和重命名字段/变量一样

添加方法字段

比如有方法:

private static void print(String abc) {    System.out.println("abc = " + abc);}

在调用的时候想再添加一个int类型的参数,怎么做?

32bf63da7f42e1130aa0b421ba5d1370.png

可以直接在调用的地方,写上要加的参数的值,然后按ALT+ENTER,选择Add xx as ...即可。

抽取重复的值为变量

比如有如下调用:

Date d1 = DateUtil.parse("2020-09-01", "yyyy-MM-dd");Date d2 = DateUtil.parse("2020-09-02", "yyyy-MM-dd");Date d3 = DateUtil.parse("2020-09-03", "yyyy-MM-dd");

可以看到,yyyy-MM-dd是一样的,可以进行抽取为一个变量。

选中"yyyy-MM-dd",执行Refactor->Extract->Variable(alt+shift+L)操作。

eba5f0084cd6f29accd4885aace4cc77.png

这里有2个选择:替换选中的地方和替换所有出现的地方。选择替换所有出现的地方即可。

抽取重复的值为常量

还是上面的例子,选中"yyyy-MM-dd",执行Refactor->Extract->Constant(ctrl+alt+C)。

378da271ee0297e7a61c080b01b8110c.png

选择PATTERN,这样就会在当前类中定义一个常量:public static final String PATTERN = "yyyy-MM-dd";

将变量添加为方法参数

比如在方法中定义了变量boolean parse = false;如果要将parse添加为方法参数,光标定位到parse,执行Refactor->Extract->Parameter(CTRL+ALT+P),改变量就会成为方法参数。

98388376938c1cbe65350e08b842ad49.png

将多个方法参数抽取为一个对象作为方法的参数

比如:

private static void print(String name, int age, boolean parse) throws ParseException {    System.out.println("name = " + name + ",age=" + age);    Date d1 = DateUtil.parse("2020-09-01", PATTERN);    Date d2 = DateUtil.parse("2020-09-02", PATTERN);    Date d3 = DateUtil.parse("2020-09-03", PATTERN);}

如果要将方法的多个参数抽取一个参数对象,执行Refactor->Extract->Parameter Objet。

6461bdb4b8d9e1adaf8dd07f4f35e11a.png

这里默认是选择所有的方法参数,作为Class的字段,你可以根据需要选择。比如这里只选择了name和age。

然后点Refactor,生成的MyParamterObj如下:

public class MyParameterObj {    private final String name;    private final int age;    public MyParameterObj(String name, int age) {        this.name = name;        this.age = age;    }    public String getName() {        return name;    }    public int getAge() {        return age;    }}

原来的方法变为:

private static void print(MyParameterObj myParameterObj, boolean parse) throws ParseException {    System.out.println("name = " + myParameterObj.getName() + ",age=" + myParameterObj.getAge());    Date d1 = DateUtil.parse("2020-09-01", PATTERN);    Date d2 = DateUtil.parse("2020-09-02", PATTERN);    Date d3 = DateUtil.parse("2020-09-03", PATTERN);  }

原来的name和age参数变为了MyParameterObj。

该方法调用的地方也变为了:

print(new MyParameterObj("jack", 13), false);

该重构功能,在方法参数很多的时候,是一个非常有用的功能。

从类中抽取方法作为接口

执行Refactor->Extract->Interface,然后选择要作为接口的方法列表

e93ab0de036cdce4cab14087f73e8283.png

点Refactor后,当前类会实现刚刚抽取的接口。

public class Test2 implements MyTestService {    // ...}

创建的接口如下:

public interface MyTestService {    void sayHello(String name);}

这也算是一个比较实用的功能。

还有提取方法作为Super Class的方法、将方法用包装类进行包装就不一一介绍了,和抽取方法作为接口方法差不多。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值