IDEA代码重构

 重构

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

重命名元素

 重命名类

当我们进行重命名操作的时候可以看到第六行存在一个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.mzph.cn/news/827342.shtml

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

相关文章

生成计算机注册信息:硬盘,主板和CPU组合 根据计算机硬盘,主板,CPU生成注册信息

目录 一.总体说明 二.完整代码 三.逐行分析 一.总体说明 注册信息是用于识别和验证计算机的唯一标识符。在生成注册信息时,通常会包含计算机的硬盘、主板和CPU的相关信息。这些信息可以用于授权软件、管理许可证、防止盗版以及进行系统配置和维护等方面。 具体而言,注册…

管理集群工具之LVS

管理集群工具之LVS 集群概念 将很多机器组织在一起&#xff0c;作为一个整体对外提供服务集群在扩展性、性能方面都可以做到很灵活集群分类 负载均衡集群&#xff1a;Load Balance高可用集群&#xff1a;High Availability高性能计算&#xff1a;High Performance Computing …

模拟网关是什么?

模拟网关是一种网络设备&#xff0c;用于在模拟电话系统和数字网络之间进行信号转换。它的主要作用是将模拟语音信号转换为数字格式&#xff0c;使得这些信号能够通过基于IP&#xff08;互联网协议&#xff09;的网络进行传输&#xff0c;从而实现语音通信。这种设备是将传统的…

Python环境找不到解决方法

Python环境找不到 打开设置&#xff1a;Ctrl Alt S 添加Local Interpreter... 打开System Interpreter&#xff0c;找到本地安装的Python.exe路径&#xff0c;然后一路点OK Trust Project 如果打开工程时&#xff0c;出现如下对话框&#xff0c;请勾选 Trust projects in ...&…

项目管理中,项目团队如何高效的协作与沟通?

目 录 一、项目团队高效的协作与沟通&#xff0c;可以通过以下几个方面来实现&#xff1a; 二、如何在项目团队中明确和共享愿景以提高协作效率&#xff1f; 三、有效的沟通策略在项目管理中的应用案例有哪些&#xff1f; 四、建立哪些具体的沟通机制可以提升团队协作效率…

matlab学习003-绘制由差分方程表示的离散系统图像

目录 1&#xff0c;题目 2&#xff0c;使用函数求解差分方程 1&#xff09;基础知识 ①filter函数和impz函数 ②zeros函数 ☀ 2&#xff09;绘制图像 ​☀ 3&#xff09;对应代码 如果连简单的信号都不会的&#xff0c;建议先看如下文章&#x1f447;&#xff0c;之…

互联网大厂ssp面经,数据结构part2

1. 什么是堆和优先队列&#xff1f;它们的特点和应用场景是什么&#xff1f; a. 堆是一种特殊的树形数据结构&#xff0c;具有以下特点&#xff1a;i. 堆是一个完全二叉树&#xff0c;即除了最后一层外&#xff0c;其他层都是满的&#xff0c;并且最后一层的节点都靠左对齐。i…

【设计模式】11、flyweight 享元模式

文章目录 十一、flyweight11.1 pool 连接池11.1.1 pool_test.go11.1.2 pool.go11.1.3 conn.go 11.2 chess_board11.2.1 chess_test.go11.2.2 chess.go 十一、flyweight https://refactoringguru.cn/design-patterns/flyweight 大量重复的对象, 如果很消耗资源, 没必要每次都初…

IP/网关流量控制:Linux上设置多个路由表 (多号段IP配置)

文章目录 引言I 使用特定的路由策略和规则1.1 实现思路1.2 配置路由策略II Mac/window的IP多号段配置2.1 Mac电脑2.2 windows系统2.3 linux系统III 预备知识3.1 配置接口 IP 地址和网关3.2 启用IP转发功能3.3 修改IP地址3.4 添加一个新的路由策略3.5 路由表配置引言

常见的经典目标检测

常见的经典目标检测算法主要包括&#xff1a; R-CNN 系列57&#xff1a;R-CNN&#xff08;Region-based Convolutional Neural Networks&#xff09;是一种经典的目标检测算法&#xff0c;它通过卷积神经网络&#xff08;CNN&#xff09;提取候选区域特征&#xff0c;然后使用支…

SEGGER Embedded Studio IDE移植FreeRTOS

SEGGER Embedded Studio IDE移植FreeRTOS 一、简介二、技术路线2.1 获取FreeRTOS源码2.2 将必要的文件复制到工程中2.2.1 移植C文件2.2.2 移植portable文件2.2.3 移植头文件 2.3 创建FreeRTOSConfig.h并进行配置2.3.1 处理中断优先级2.3.2 configASSERT( x )的处理2.3.3 关于系…

【npm】常用的NPM命令及在开发过程中的应用

常用的NPM命令及在开发过程中的应用 NPM&#xff08;Node Package Manager&#xff09;是JavaScript的包管理工具&#xff0c;也是世界上最大的软件注册表。它允许开发者共享和重用代码&#xff0c;并便于管理各种Node.js的包依赖。本文将介绍一些常用的NPM命令&#xff0c;并…

linq select 和selectMany的区别

Select 和 SelectMany 都是 LINQ 查询方法&#xff0c;但它们之间有一些区别。 Select 方法用于从集合中选择特定的属性或对集合中的元素进行转换&#xff0c;并返回一个新的集合。例如&#xff1a; var numbers new List<int> { 1, 2, 3, 4, 5 }; var squaredNumbers…

SRS WebRTC Whip 和 Whep 部署体验问题

whip 報錯 404 webrtc推流 小窗口一闪而过&#xff0c;然后查看f12回复404的报错信息 chrome版本&#xff1a; 正在检查更新 版本 123.0.6312.123&#xff08;正式版本&#xff09; &#xff08;64 位&#xff09; centos 7.9 源码安装部署&#xff0c; 代码分支5.0 完全按…

【设计模式】中介模式

目录 什么是中介模式 中介模式的组成 使用场景&#xff1a; 优点&#xff1a; 缺点&#xff1a; Java 示例代码&#xff1a; 什么是中介模式 Java 中的中介模式&#xff08;Mediator Pattern&#xff09;是一种行为型设计模式&#xff0c;旨在降低多个对象和类之间的通信…

socket通信基础讲解及示例-C

socket通信之C篇 服务端与客户端简介 socket通信服务端与客户端通信模型通信实战server&#xff08;服务端&#xff09;创建client&#xff08;客户端&#xff09;创建 函数详解创建套接字 socket绑定端口bind进入监听状态listen获取客户端连接请求accept接收网络数据read发送数…

selenium上传文件时打开指定本地文件路径

遇到这样一个问题&#xff1a; 用selenium和chromedriver操作浏览器&#xff0c;其中有一个“本地上传”的按钮&#xff0c;点击后&#xff0c;会进入本地电脑的文件夹&#xff0c;但是这个文件夹一般是C:\Users\XX。如何指定本地上传路径呢&#xff1f; 看起来很简单的一个问…

《前端面试题》- 编程题-手写new(JS)

function Person(name) {this.name name; }Person.prototype.say function() {console.log(Im ${this.name}); }const xiaoming new Person(xiaoming); xiaoming.say(); // 输出 // Im xiaomingfunction _new(fn, ...args) {// 基于fn的原型创建一个新的对象const emptyObj …

每日一题---移除链表元素

文章目录 前言1.题目2.分析思路3.参考代码 前言 Leetcode–-移除链表元素 1.题目 2.分析思路 首先要创建一个新的链表&#xff0c;在定义三个指针&#xff0c;newHead&#xff0c;newTail和pcur&#xff0c;分别代表新链表头&#xff0c;新链表尾以及用于遍历原链表。 其次是…

Rust入门-所有权

一、为什么、是什么、怎么用 1、为什么Rust要提出一个所有权和借用的概念 所有的程序都必须和计算机内存打交道&#xff0c;如何从内存中申请空间来存放程序的运行内容&#xff0c;如何在不需要的时候释放这些空间&#xff0c;成为所有编程语言设计的难点之一。 主要分为三种…