IDEA快捷键-重构

重构项目案例参考

重构技巧1 - 消除重复new创建

重构技巧1 - 消除重复new创建

重构技巧2 - 提炼函数,消除重复计算

重构技巧2 - 提炼函数,消除重复计算

提炼函数

ctrl + alt + M,选择对应的代码块,进行提炼

提炼变量

ctrl + alt + v,选择要提炼的变量,进行提炼

搬移函数

重构 -> 移动实例方法 或 F6,选中方法,进行搬移

inlIne使用(内联)

inLine重构局部变量

选中变量:ctrl + alt + n
示例:

private static Object parseBoolean(List<String> arguments, Option option) {
    Object value;
    value = arguments.contains("-" + option.value());
    return value;
}
// 点击value(return value)的value
// 通过快捷键 ctr + alt + n

// 内联后:
private static Object parseBoolean(List<String> arguments, Option option) {
  return arguments.contains("-" + option.value());
}  

inLine重构方法

批量代码拷贝

示例:

static class StringOptionParser implements OptionParser {
    @Override
    public Object parser(List<String> arguments, Option option) {
      return parseString(arguments, option);
    }
}

private static Object parseString(List<String> arguments, Option option) {
    int index = arguments.indexOf("-" + option.value());
    return String.valueOf(arguments.get(index + 1));
}


  1. 这时如果想将parseString的内容,copy到StringOptionParser的方法上,可以使用 Ctrl + alt + n进行inLine(IDEA进行copy 粘贴)

    有如下几种策略:这里选第三种,代码示例如下
    在这里插入图片描述

    static class StringOptionParser implements OptionParser {
        @Override
        public Object parser(List<String> arguments, Option option) {
          int index = arguments.indexOf("-" + option.value());
          return String.valueOf(arguments.get(index + 1));
        }
    }
    // 由于选择,保留方法,因此我们需要手动修改
    private static Object parseString(List<String> arguments, Option option) {
        int index = arguments.indexOf("-" + option.value());
        return String.valueOf(arguments.get(index + 1));
    }
    // 修改后
    private static Object parseString(List<String> arguments, Option option) {
     	 return new StringOptionParser().parser(arguments, option);
    }
    
    1. 在通过inLine方法,将代码拷贝回来

      if (parameter.getType() == String.class) {
        	value = parseString(arguments, option);
      }
      // inLine
      // 这时候本来的方法就没了
      if (parameter.getType() == String.class) {
        	value = new StringOptionParser().parser(arguments, option);
      }
      

重构

重构菜单栏

ctrl + alt + shift + T

IDEA尽可能使用接口

右键 -> 重构 -> 尽可能使用接口

参考案例

  1. 目前调用
    依赖具体实现
if (parameter.getType() == int.class) {
  // 依赖具体实现
  IntOptionParser parser = new IntOptionParser();
  value = parser.parse(arguments, option);
}
  1. 利用尽可能使用接口,将其修改为接口方式
    在这里插入图片描述
  2. 效果
if (parameter.getType() == int.class) {
  OptionParser parser = new IntOptionParser();
  value = parser.parse(arguments, option);
}
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值