图解如何利用Intellij IDEA进行代码重构
源:https://jingyan.baidu.com/article/c45ad29c64f7e7051653e27d.html
重命名类,打开 Refactor -> Rename 或 Shift+F6,输入新类名,如果需要修改变量名,则勾上 要修改的代码,如下图所示:
- 2
重命名文件,打开 Refactor -> Rename File,输入新文件名,如下图所示:
- 3
修改方法签名(参数、方法名、返回值等),打开 Refactor -> Change Signature,如下图所示:
- 4
实例方法变成静态方法,打开 Refactor -> Make Static,如下图所示:
- 5
静态方法转为实例方法,打开 Refactor -> Convert To Instance Method,将参数中包含当前类 对象的静态方法转为实例方法,如下图所示:
- 6
移动类,打开 Refactor -> Move 或 F6,指定目的包或作为内部类,如下图所示:
- 7
复制类,打开 Refactor -> Copy 或 F5,指定目的包,如下图所示:
- 8
方法或属性转为变量。打开 Refactor -> Extract -> Variable 或 Ctrl+Alt+V,将对象属性或方法调 用转本地变量,如下图所示:
- 9
数值转为常量。打开 Refactor -> Extract -> Constants 或 Ctrl+Alt+C,输入常量值,回车确认, 数值便转为常量,如下图所示:
- 10
变量转为对象属性。执行 Refactor -> Extract -> Field 或 Ctrl+Alt+F,输入属性名,回车确认, 变量便转为为对象属性,如下图所示:
- 11
变量转为方法参数。执行 Refactor -> Extract -> Parameter 或 Ctrl+Alt+P,然后输入参数名,回 车确认,变量便转为方法参数,如下图所示:
- 12
扩展多个参数为一个参数对象。光标移到方法名上,执行 Refactor -> Extract -> Parameter Object,选择要封装的参数,输入对象参数类型,如下图所示:
- 13
扩展变量或表达式为方法。光标移到要转换的变量上,执行 Refactor -> Extract -> Method 或 Ctrl+Alt+M,输入方法名,如下图所示:
- 14
扩展变量或表达式为内部类或匿名类。执行 Refactor -> Extract -> Method Object,输入类名,如下图所示:
- 15
创建委托类。执行 Refactor -> Extract -> Delegate,选择要委托的方法,便生成了委托类,如下图所示:
- 16
创建接口。执行 Refactor -> Extract -> Interface,选择接口方法,便生成了接口,如下图所示:
- 17
生成父类。执行 Refactor -> Extract -> Superclass,选择父类方法,便生成了父类,如下图所示:
- 18
将方法的实现代码复制到调用处并删除方法。执行 Refactor -> Inline 或 Ctrl+Alt+N,如下图所示:
- 19
将方法或属性提升到父类中。执行 Refactor -> Pull Members Up,如下图所示:
- 20
将方法或属性推到子类中。执行 Refactor -> Push Members Down,如下图所示:
- 21
重新封装方法返回值对象。执行 Refactor -> Wrap Return Value,输入返回对象类名,如下图所示:
- 22
使用工厂方法模式替换构造器。执行 Refactor -> Replace Constructor With Factory Method,输 入工厂方法名,如下图所示:
- 23
使用创建者模式替换构造器。执行 Refactor -> Replace Constructor With Builder,输入 Builder 的类名,如下图所示:
图解如何利用Intellij IDEA进行代码重构的更多相关文章
- 二十九、利用 IntelliJ IDEA 进行代码对比的方法
我们会有这样的需求,即:想对比出两个不同版本代码的区别.如何实现? 第 1 种:如果我们是从 SVN 检出的项目,并且想比较本地代码与从 SVN 检出时的代码相比都有那些区别,可以按如下步骤操作, 如 ...
- 利用 IntelliJ IDEA 进行代码对比的方法
Sometimes,我们会有这样的需求,即:想对比出两个不同版本代码的区别.如何实现? 第 1 种:如果我们是从 SVN 检出的项目,并且想比较本地代码与从 SVN 检出时的代码相比都有那些区别,可以 ...
- ASP.NET SignalR 与 LayIM2.0 配合轻松实现Web聊天室(十二) 代码重构使用反射工厂解耦(一)缓存切换
前言 上一篇中,我们用了反射工厂来解除BLL和UI层耦合的问题.当然那是最简单的解决方法,再复杂一点的程序可能思路相同,但是在编程细节中需要考虑的就更多了,比如今天我在重构过程中遇到的问题.也是接下来 ...
- CSS代码重构与优化之路
作者:@狼狼的蓝胖子 网址:http://www.cnblogs.com/lrzw32/p/5100745.html 写CSS的同学们往往会体会到,随着项目规模的增加,项目中的CSS代码也会越来越多, ...
- CSS代码重构
CSS代码重构的目的 我们写CSS代码时,不仅仅只是完成页面设计的效果,还应该让CSS代码易于管理,维护.我们对CSS代码重构主要有两个目的:1.提高代码性能2.提高代码的可维护性 提高代码性能 提高 ...
- 推荐五款优秀的PHP代码重构工具
在软件工程学里,重构代码一词通常是指在不改变代码的外部行为情况下而修改源代码.软件重构需要借助工具完成,而重构工具能够修改代码同时修改所有引用该代码的地方.本文收集了五款出色的PHP代码重构工具,以帮 ...
- 代码重构 & 代码中的坏味道
1.重构 1.1 为什么要重构 1.1.1 改进程序设计 程序员为了快速完成任务,在没有完全理解整体架构之前就开始写代码, 导致程序逐渐失去自己的结构.重构则帮助重新组织代码,重新清晰的体现 程序结构 ...
- 如何把if-else代码重构成高质量代码
原文:https://blog.csdn.net/qq_35440678/article/details/77939999 本文提纲: 为什么我们写的代码都是if-else? 这样的代码有什么缺点? ...
- CSS代码重构与优化
CSS代码重构的基本方法 前面说到了CSS代码重构的目的,现在我们来说说一些如何达到这些目的的一些基本方法,这些方法都是易于理解,容易实施的一些手段,大家平时可能也不知不觉地在使用它. 提高CSS性能 ...
随机推荐
- [转载]Linux 命令详解:./configure、make、make install 命令
[转载]Linux 命令详解:./configure.make.make install 命令 来源:https://www.cnblogs.com/tinywan/p/7230039.html 这些 ...
- vue中使用ts后,父组件获取执行子组件方法报错问题
一.问题产生背景: 子组件的一个方法: update () { this.$nextTick(() => { this.ul_slots.forEach((ul, cur_slots_index ...
- laravel 框架 数据库迁徙时SQLSTATE[420000]错误
问题: SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key wa s too long; max key le ...
- zabbix-自定义监控项
一.自定义一个监控项 模板虽好,但是不能解决所有的监控,有些需要的监控项在模板中并没有,需要我们自己定义一个监控项,如何定义一个监控项呢?大概的流程是这样的几步 .在插件配置文件中定义一个key/va ...
- Image Processing and Analysis_21_Scale Space:Scale-space theory A basic tool for analysing structures at different scales——1994
此主要讨论图像处理与分析.虽然计算机视觉部分的有些内容比如特 征提取等也可以归结到图像分析中来,但鉴于它们与计算机视觉的紧密联系,以 及它们的出处,没有把它们纳入到图像处理与分析中来.同样,这里面也有 ...
- TCP/IP网络
1. 简述osi七层模型和TCP/IP五层模型 一.OSI参考模型 今天我们先学习一下以太网最基本也是重要的知识——OSI参考模型. 1.OSI的来源 OSI(Op ...
- 安装Vue脚手架和创建一个简单的Demo
https://www.cnblogs.com/pengjunhao/p/6762141.html https://www.cnblogs.com/yanxulan/p/8978732.html 查看 ...
- rabbitmq可靠性
本文翻译汇总自rabbitmq的官方文档. 翻译使用谷歌翻译后简单修改,部分内容读起来仍然比较晦涩,不过意思传达到了. 可靠性指南 本页介绍了如何使用AMQP和RabbitMQ的各种功能来实现可靠 ...
- IP协议首部结构介绍
当提交给数据链路层进行传送时,一个 I P分片或一个很小的无需分片的 I P数据报称为分组.数据链路层在分组前面加上它自己的首部,并发送得到的帧.I P只考虑它自己加上的 I P首部,对报文本身既不检 ...
- C# List<T> 集合使用
1.初始化集合 , ); , ); , ); ) { graham, emerson, mario }; 2. 添加元素 racers.Add(, )); racers.Add(, )); racer ...