图解如何利用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性能 ...
随机推荐
- 使用nodejs连接mysql数据库实现增删改查
首先要有数据库 使用xampp 或者 phpstudy 可以傻瓜式安装 新建一个项目文件夹 之后在这个目录下初始化package.json (npm init) 先在项目中安装mysql 和 ex ...
- 让一个父级div根据子级div高度而自适应高度
需求是点击上传的时候进行子级div高度不定,相对来说父级div高度也不能固定,把元素都设置成普通标准流,然后样式可以使用margin内边距或者padding外边距来进行调节 放上代码供参考: .opu ...
- 整理一下Promise 的用法
Promise 的定义 Pormise是JS的异步编程的一种解决方案,在ES6将其写进了语言标准,提供了原生的Promise对象. Promise简单来理解就是一个容器,里面存放着某个未来才会结束的事 ...
- wince如何扫描条码并且在浏览器上查询数据
这个挺简单的,winform也适用 public override void OnGetBarcode(string scanStr) { try { Process.Start("iesa ...
- ASE19团队项目beta阶段Backend组 scrum5 记录
本次会议于12月11日,19:30在微软北京西二号楼sky garden召开,持续10分钟. 与会人员:Zhikai Chen, Lihao Ran, Xin Kang 请假人员:Hao Wang 每 ...
- ffmpeg转MP4文件为m3u8格式
第一种转换命令 #转mp4为ts ffmpeg -y -i D:\videos\BgFCWkn00qPBmWVzIEf0eQjaekx0oRjlk9VY2PcR.mp4 -vcodec copy -a ...
- pytorch训练模型的一些坑
1. 图像读取 opencv的python和c++读取的图像结果不一致,是因为python和c++采用的opencv版本不一样,从而使用的解码库不同,导致读取的结果不同. 详细内容参考:https:/ ...
- POST,PUT和PATCH的区别
1. GET方法用于获取资源,不应有副作用,所以是幂等的. 比如:GET http://www.bank.com/account/123456,不会改变资源的状态,不论调用一次还是N次都没有副作用.请 ...
- Paper Reading:ION
Inside-Outside Net (ION) 论文:Inside-Outside Net: Detecting Objects in Context with Skip Pooling and R ...
- 系统分析与设计结对项目——WordCount
结对项目完成WordCount 合作者:201631062507 201631062526(学号) 代码地址:https://gitee.com/WordCountMC/WordCountTeam ...