图解如何利用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性能 ...
随机推荐
- “df: cannot read table of mounted file systems”.
“df: cannot read table of mounted file systems”.“df -l” returned an error: “df: cannot read table of ...
- C++ sizeof(struct) 的注意
今天在测试将C++代码导出的NavMesh二进制文件用一套C#改写的代码导入时,发现导入的数据出现不一致的问题. 分别在C++和C#AddTile的函数内设置断点,观察最后得到的tile有大部分的字段 ...
- C语言对齐、补齐
加快CPU读取数据的速度 aligned(n) 让所作用的结构成员对齐在n字节自然边界上.如果结构中有成员的长度大于n,则按照最大成员的长度来对齐 struct s { char c; int i; ...
- 【Hibernate】持久化对象状态及以及缓存
一.持久化类状态 1.1 三种持久化对象的状态 1.2 区分三种状态 1.3 三种状态对象转换 1.瞬时态 2.持久态 3.脱管态 4.持久态对象有自动更新数据库的能力 一.持久化类状态 1.1 三种 ...
- 【leetcode】575. Distribute Candies
原题 Given an integer array with even length, where different numbers in this array represent differen ...
- 通过docker搭建ELK集群
单机ELK,另外两台服务器分别有一个elasticsearch节点,这样形成一个3节点的ES集群. 可以先尝试单独搭建es集群或单机ELK https://www.cnblogs.com/lz0925 ...
- 05 Windows编程——Windows程序框架
源码 #include<Windows.h> LRESULT CALLBACK WindProc(HWND hwnd, UINT message, WPARAM wParam, LPARA ...
- keepalived+lvs+usp安装实施文档
操作系统平台:RedHat6.4 x86_64 软件:LVS+keepalived LVS+Keepalived 介绍 LVS LVS是Linux Virtual Server的简写,意即Linux ...
- Oracle自动化安装脚本-part03-亲试ok
此为 软件包配置文件 software.conf [CentOS6] binutils-2.20.51.0.2-5.11.el6 (x86_64) compat-libcap1-1.10-1 (x8 ...
- JS 过滤数组里对象的某个属性
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...