IDEA代码重构

news2024/12/25 12:21:38

 重构

重构的目的: 提高代码的可读性、可维护性、可扩展性和性能。

重命名元素

 重命名类

当我们进行重命名操作的时候可以看到第六行存在一个R(rename),点击后就会弹出所偶有引用,这样可以避免我们在修改后存在遗漏引用处未修改。

我们可以通过shift+F6 (windows/linux),F6(macos)来调用重命名重构,idea会将类、方法、变量建议替代名称,你可以在推荐的列表中选择其一。

 在我们的实体类中使用shift+F6对属性进行修改,IntelliJ IDEA 会检测此字段是否用于 getter 和 setter 方法,并询问我们是否更新。它还会更新该字段在方法参数名称中的用法。

更改签名

 在我们的接口方法中,当我们新增一个参数的时候,比如一个int类型的count,点击R可以对方法新增参数给予默认值。

修改类签名

public class MyTest {
    int count = 0;

    public int getCount() {
        return count;
    }

    public void setCount(int count) {
        this.count = count;
    }

    public static void main(String[] args) {
        MyTest test = new MyTest();
        System.out.println(test.getCount());
    }
}

 Ctrl+F6 来修改类签名。 我们向其添加两个通用参数:一个名为 K,默认值 Integer;一个名为 V,默认值 String。 重构类后,MyTest的用法将改变。

 改变后如下:

public class MyTest<K, V> {
    int count = 0;

    public int getCount() {
        return count;
    }

    public void setCount(int count) {
        this.count = count;
    }

    public static void main(String[] args) {
        MyTest<Integer, String> test = new MyTest<Integer, String>();
        System.out.println(test.getCount());
    }
}

提取方法

         我们可以在 macOS 上使用快捷键 ⌥⌘M,或者在 Windows/Linux 上使用 Ctrl+Alt+M 将这段代码提取到另一方法。也可以选中代码后alt+Enter 选中后回车进行方法的提取

 内联方法

选中抽取的方法后,我们可以在 macOS 上使用快捷键 ⌥⌘N ,或者在 Windows/Linux 上使用 Ctrl+Alt+N 来内联刚刚创建的方法 manipulateStack。 我们可以内联方法内容然后删除方法,也可以保留方法。 在此示例中,我们删除了方法。

 

 勾选移除后确认就可以了,可以理解为内联是提取方法重构的逆转,往往用来移除不必要的重定向,或者内联后重新选择提取部分进行提取重构。

 引入常量

在开发中,通常避免使用魔法值。。 我们可以在 macOS 上使用快捷键 ⌥⌘C,或者在 Windows/Linux 上使用 Ctrl+Alt+C 将这个值提取到常量。

引入字段

除了将其定义为常量,您还可以在 macOS 上使用 ⌥⌘F,或者在 Windows/Linux 上使用 Ctrl+Alt+F 来引入字段存储这些值,以便它们在不同实例中拥有不同值。

提取参数

    // Arrays.asList(1,2,3,4)提取为getItemsList方法参数前
    public List<Integer> getItemsList() {
        return   Arrays.asList(1,2,3,4).subList(fromIndex, toIndex);
    }
    // ctrl+alt+p 进行参数提取    
    public List<Integer> getItemsList(List<Integer> integers) {
      return   integers.subList(fromIndex, toIndex);
    }

引入变量

          // 不使用引用变量前
            int a = 1,b=2,c=3;
            if (a>b&&c>b){
                return;
            }
            
            // ctrl+alt+v引入新变量
            final boolean aUpperb = a > b;
            final boolean cUpperb = c > b;
            if (aUpperb && cUpperb){
                return ;
            }

安全删除

如果您不想再在项目中使用某个文件或符号,您应该把它安全删除。

选择要删除的文件或类,然后使用 ⌘⌦,或者在 Windows/Linux 上使用 Alt+Delete。 IntelliJ IDEA 在确保资源可被安全删除之后才会将其删除。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1631243.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue项目解决自定义el-dialog的border-radius无效的问题

一、问题产生的原因 自定义el-dialog的border-radius无效的原因其实就是因为层级的问题&#xff0c; f12打开样式检查就能发现组件自身已经全局定义了一个圆角变量 二、解决方法 和上面一样&#xff0c;在项目全局也就是在app.vue中定义全局变量 并且需要给!important&a…

【阿里云笔试题汇总】2024-04-20-阿里云春招笔试题-三语言题解(CPP/Python/Java)

&#x1f36d; 大家好这里是清隆学长 &#xff0c;一枚热爱算法的程序员 ✨ 本系列打算持续跟新阿里云近期的春秋招笔试题汇总&#xff5e; &#x1f4bb; ACM银牌&#x1f948;| 多次AK大厂笔试 &#xff5c; 编程一对一辅导 &#x1f44f; 感谢大家的订阅➕ 和 喜欢&#x1f…

3. uniapp开发工具的一些事

前言 新的一天&#xff0c;又要开始卷起来了&#xff0c;开发程序开发当前离不开开发工具&#xff0c;一个好的开发工具办事起来那必然是事倍功半的...本文主要分享了关于uniapp里开发工具的一些事~ 概述 阅读时间&#xff1a;约5&#xff5e;7分钟&#xff1b; 本文重点&am…

《深入理解mybatis原理》 MyBatis的架构设计以及实例分析

《深入理解mybatis原理》 MyBatis的架构设计以及实例分析 MyBatis是目前非常流行的ORM框架&#xff0c;它的功能很强大&#xff0c;然而其实现却比较简单、优雅。本文主要讲述MyBatis的架构设计思路&#xff0c;并且讨论MyBatis的几个核心部件&#xff0c;然后结合一个select查…

linux下安装deepspeed

安装步骤 一开始安装deepspeed不可以使用pip直接进行安装。 这时我们需要利用git进行clone下载到本地&#xff1a; git clone https://github.com/microsoft/DeepSpeed.git 进入到deepspeed的安装目录下 cd /home/bingxing2/ailab/group/ai4agr/wzf/Tools/DeepSpeed 激活…

探索小猪APP分发平台:数字时代的新宠

随着数字化进程的加速&#xff0c;移动应用&#xff08;APP&#xff09;市场正迅速扩大。在这个充满竞争的市场中&#xff0c;一个优秀的APP分发平台能够帮助开发者和商家更有效地触及潜在用户&#xff0c;而小猪APP分发平台&#xff08;www.ppzhu.net&#xff09;正是其中的佼…

Windows 下安装RabbitMQ

一、消息中间件 ActiveMQ&#xff1a;基于JMS RabbitMQ&#xff1a;基于AMQP协议&#xff0c;erlang语言开发&#xff0c;稳定性好 RocketMQ&#xff1a;基于JMS&#xff0c;阿里巴巴产品&#xff0c;目前交由Apache基金会 Kafka&#xff1a;分布式消息系统&#xff0c;高吞吐…

tableau如何传参数到MySQL数据库

1、打开tableau连接本地MySQL-》新建自定义sql-》创建参数 2、新建一个简单的工作表-》把维度拖拽到行显示结果-》右键显示参数 3、参数传递到数据库sql写法 select * from yonghu where yonghu.姓名 like concat(%,<参数.姓名>,%)select * FROMabadata4WHERE abadata4…

华为认证云计算方向,真的值得学吗……

在数字化转型的浪潮中&#xff0c;云计算技术正变得越来越关键。 华为&#xff0c;作为全球领先的信息与通信技术&#xff08;ICT&#xff09;解决方案提供商&#xff0c;其提供的云计算认证被广泛认为是行业内的重要资质之一。 那么&#xff0c;华为云计算认证的价值何在&am…

【PyTorch与深度学习】2、PyTorch张量的运算API(上)

课程地址 最近做实验发现自己还是基础框架上掌握得不好&#xff0c;于是开始重学一遍PyTorch框架&#xff0c;这个是课程笔记&#xff0c;这个课还是讲的简略&#xff0c;我半小时的课听了一个半小时。 1. 张量 1.1 张量操作 &#xff08;1&#xff09;chunk&#xff1a;将一…

1.Neo4j图数据库介绍

背景 1.社交、电商、金融、零售、物联网行业&#xff0c;现实社会组织起了一张庞大复杂的关系网。 2.传统数据库很难处理关系运算。 3.需要一种支持海量复杂数据关系运算的数据库。 图数据库是以图数据结构存储和查询数据&#xff0c;是一种NoSQL数据库&#xff0c;存储更多…

冯唐成事心法笔记 —— 知己

系列文章目录 冯唐成事心法笔记 —— 知己 冯唐成事心法笔记 —— 知人 冯唐成事心法笔记 —— 知世 冯唐成事心法笔记 —— 知智慧 文章目录 系列文章目录卷首语 管理是一生的日常&#xff0c;成事是一生的修行PART 1 知己 用好自己的天赋如何管理自我第一&#xff0c;如何…

沉浸式翻译 chrome 插件 Immersive Translate - Translate Website PDF

免费翻译网站&#xff0c;翻译PDF和Epub电子书&#xff0c;双语翻译视频字幕 &#x1f4e3; 网络上口碑爆炸的网站翻译扩展工具【沉浸式翻译】⭐⭐⭐⭐⭐ &#x1f4bb; 功能特点如下&#xff1a; &#x1f4f0; 网站翻译 &#x1f680; 提供双语网站翻译&#xff0c;智能识…

数据库常考理论

1 笛卡尔积X与自然连接∞的区别 2 求候选键 3 无损连接及函数依赖 4 范式判断 笛卡尔积&#xff1a;S1*S2,产生的结果包括S1和S2的所有属性列&#xff0c;并且S1中每条记录依次和S2中所有记录 组合成一条记录&#xff0c;最终属性列为S1S2属性列&#xff0c;记录数为S1*S2记…

k8s pod使用sriov

之前的文章中讲了k8s multus的使用&#xff0c;本章节来讲述下如何使用multus来实现sriov的使用。 一、sriov 简介 SR-IOV在2010年左右由Intel提出&#xff0c;但是随着容器技术的推广&#xff0c;intel官方也给出了SR-IOV技术在容器中使用的开源组件&#xff0c;例如&#…

Java集合框架-Collection-queue

目录 一、Deque二、ArrayDequeArrayDeque层次结构图ArrayDeque概述ArrayDeque底层数据结构ArrayDeque常用方法(简略) 三、PriorityQueuePriorityQueue层次结构图PriorityQueue概述PriorityQueue 底层数据结构PriorityQueue常用方法(详细) Java里有一个叫做Stack的类&#xff0c…

Qt | 标准、复选、单选、工具、命令按钮大全

01、QPushButton QPushButton 类(标准按钮) 示例 3:默认按钮与自动默认按钮 02、QCheckBox QCheckBox 类(复选按钮) 1、复选按钮的第三状态(见右图 Qt5.10.1 的选中状态):是指除了选中 和未选中状态之外的第三种状态,这种状态用来指示“不变”,表 示用户既不选中也不取…

go语言实现简单认证样例

目录 1、代码实现样例 2、postman调用 1、代码实现样例 package mainimport ("net/http""strings""github.com/dgrijalva/jwt-go""github.com/gin-gonic/gin" )var (// 密钥&#xff0c;用于验证 JWT 令牌signingKey []byte("…

09 配置文件日志多线程

配置文件 配置文件 在企业开发过程中&#xff0c;我们习惯把一些需要灵活配置的数据放在一些文本文件中&#xff0c;而不是在Java代码写死我们把这种存放程序配置信息的文件&#xff0c;统称为配置文件 配置文件一般要求有明确的格式&#xff0c;以方便读写操作!!! Properti…