eclipse 重构_Eclipse对类固醇的重构

eclipse 重构

在上一篇有关常见Java违规的文章中 ,我列出了Java开发人员容易犯的一系列错误。 在重构Java项目以解决这些违规问题的同时,我广泛使用Eclipse的重构功能来快速更改代码。 下面是这种重构技术的汇编。

1.在块级语句周围添加花括号

用{curly braces}包装块级语句通常是一个好习惯。 但是,即使在块中只有一条语句,某些开发人员还是不希望用{}来包装它们。 但是如果您这样做,Checkstyle将会抱怨。

如果您要更改此设置,

if(condition) doSomething;

对此:

if(condition){doSomething();
}

Eclipse的源代码清理可为您提供帮助。

  1. 项目资源管理器中,右键单击源文件夹,然后选择源->清理… 使用源清理在块语句周围添加花括号
  2. 选择使用自定义配置文件 ,然后点击旁边的自定义配置文件部分配置
  3. 默认情况下,清理操作配置为执行多个清理任务。 由于我们只专注于添加花括号,因此我们将禁用所有其他清理任务。 为此,请导航至“ 自定义清理”窗口中的所有选项卡,然后取消选择所有清理。
  4. 然后在“ 代码样式”选项卡中,选择“ 在if / while / for / do语句中使用块”选项,然后单击“ 确定”。
  5. 然后在“ 清理”对话框中,单击“ 下一步 ,然后将进行重构。 您将看到一个带有所做更改的评论页面。

2.将if语句合并为一个

可以说,您有如下代码:

if(isLoggedIn){if(isAdmin){doSecretStuff();}
}

将两个if语句合并为一个是安全的,除非在两个if语句之间有其他代码。 当然,您可以手动编辑代码以删除第二个if并将条件向上移动。 但是等等,当Eclipse可以为我们做这件事时,为什么我们要自己做呢?

  1. 将光标放在内部if语句的if关键字上。
  2. Ctrl + 1将打开上下文菜单。
  3. 选择选项将'if'语句与外部'if'语句连接
  4. 瞧! 现在将两个if语句合并为一个。

你会得到:

if(isLoggedIn && isAdmin){doSecretStuff();
}


3.重命名文件及其getter / setter方法

根据此 ,重命名的元素是在Eclipse中主要用于重构。 因此,当您重命名具有setter / getter方法的字段时,您将手动重命名那些方法名称。 但是Eclipse可以帮助简化此过程。

  1. 将光标放在要重命名的字段名称上。
  2. Ctrl + Shift ,然后连续两次按R键 ,这将打开“ 重命名字段”对话框。
  3. 在为您的字段提供新名称同时,检查“重命名获取器 ”和“ 重命名设置器”选项。
  4. 单击“确定”后,这将重命名该字段及其getter / setter方法。

4.反转if语句

假设您有如下代码:

if(!isLoggedIn){// ask to login
}else{// allow access
}

上面的代码是100%有效的。 但是诸如Checkstyle之类的代码质量工具可能会抱怨,因为我们在第一个条件下(即!isLoggedIn )使用了负性检查。 如果只有一种情况(只是if块),那么我们就不能做太多事情。 但是, 如果同时具有ifelse ,则可以反转条件以避免这种情况。

  1. 将光标放在第一个if关键字上。
  2. Ctrl + 1 ,然后选择Invert'if'statement
  3. Eclipse将反转条件和相应的块。
  4. 最终,您将获得:
    if(isLoggedIn){// allow access
    }else{// ask to login
    }

帮助提高代码的可读性。

结论:

当然,以上只是冰山一角。 Eclipse能够进行更多高级的重构。 那么, 您的秘密重构技术是什么?

参考: Veera Sundar博客上JCG合作伙伴 Veera Sundar 对类固醇的Eclipse重构 。


翻译自: https://www.javacodegeeks.com/2012/10/eclipse-refactoring-on-steroids.html

eclipse 重构

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

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

相关文章

python中能够处理的最大整数是_实例讲解Python中整数的最大值输出

在Python中可以存储很大的值,如下面的Python示例程序:x 10000000000000000000000000000000000000000000;x x 1print (x)输出:10000000000000000000000000000000000000000001在Python中,整数的值不受位数的限制,可以…

SAS宏保存以便快速调用的三种解决方案(转载)

1.方式一:%include %include "full_path\sortds.txt"; inserts any code in the file called sortds.txt into your program at the location of the %include statement. Using this method, the macro must be recompiled every time a %INCLUDE is exe…

log4j.properties log4j.xml 路径问题

自动加载配置文件: (1)如果采用log4j输出日志,要对log4j加载配置文件的过程有所了解。log4j启动时,默认会寻找source folder下的log4j.xml配置文件,若没有,会寻找log4j.properties文件。然后加…

webpack4+react多页面架构

webpack在单页面打包上应用广泛,以create-react-app为首的脚手架众多,单页面打包通常是将业务js,css打包到同一个html文件中,整个项目只有一个html文件入口,但也有许多业务需要多个页面不同的入口,比如不同的h5活动&am…

Spring安全性和密码编码

在以前的文章中,我们深入探讨了Spring安全性。 我们实现了由jdbc支持的安全性,基于自定义 jdbc查询的安全性以及从nosql数据库检索安全性的信息。 通过足够小心,我们会发现密码为纯文本格式。 尽管这在实际环境中可以很好地用于示例目的&…

SAS宏技术中,%let和call symput有什么区别?

平时经常使用的宏变量定义方法有三种: 1. %let xxxyyy; 2. Call Symput(xxx,yyy); 3. select xxx into: yyy. 三种定义方式最大的区别是在MACRO函数内定义所生成的宏变量的类型不同: Call Symput在宏函数中定义的宏变量可以在函数外调用;而%…

阿里巴巴的开源项目Druid(关于数据库连接)

原文地址:http://www.iteye.com/magazines/90文章简介 Druid首先是一个数据库连接池,但它不仅仅是一个数据库连接池,它还包含一个ProxyDriver,一系列内置的JDBC组件库,一个SQLParser。Druid支持所有JDBC兼容的数据库&a…

springcloud服务注册和发现

微服务架构中,服务发现组件是一个非常关键的组件,服务消费者、服务提供者、服务发现组件的关系大致如下: 各个微服务启动时,将自己的网络地址等信息注册到服务发现组件中,服务发现组件会存储这些信息服务消费者可从服务…

sas infile和filename

3.1 追加原始文件 原始数据可以使用以下的方法进行纵合并。INFILE语句 FILENAME语句 FILEVAR选项 操作系统自身的技术 首先,你可能要察看原始数据。可以用FSLIST过程。 语法: PROC FSLIST FILE file-specification; RUN; 实际使用中,专门的编…

Java 多线程(六) synchronized关键字详解

多线程的同步机制对资源进行加锁,使得在同一个时间,只有一个线程可以进行操作,同步用以解决多个线程同时访问时可能出现的问题。 同步机制可以使用synchronized关键字实现。 当synchronized关键字修饰一个方法的时候,该方法叫做同…

java自动化_作为测试工程师进阶自动化选Java还是Python?

这是很多测试工程师从功能跨入自动化纠结的问题,今天本文带大家一探究竟。Java和Python一直都是两种很火的语言,用Python的一定觉得Python好,用Java的只觉得Java好。Java语言 VS Python语言Java自动化方法 VS Python自动化方法综上所述&…

Spring –添加Spring MVC –第2部分

在上一部分中,我们为经理和员工实现了控制器。 既然我们知道了自己的出路,我们将做很少(但仅做很少)更复杂的事情-任务和时间表的控制器。 因此,让我们从org.timesheet.web开始。 TaskController 。 首先创建一个类&am…

CALL SYMPUT与CALL SYMPUTX区别

call symput 在data步中将值塞入宏变量http://www2.sas.com/proceedings/sugi29/052-29.pdf [SAS] CALL SYMPUT与CALL SYMPUTX CALL SYMPUT的功能是可以在DATA step内将值塞到一个macro变量里面。如果这个macro变量已经存在,那这个call就会更新该macro变量的值。 CA…

Linux基本结构

一个完整地Linux操作系统由4部分组成,即内核(Kernel)、外壳(Shell)、实用程序(Utilities)和应用程序(Applications)。 (1)内核是Linux的心脏&…

jmeter使用_jmeter工具的使用

1.本地下载到官网,5.3版本的对应的是jdk8版本,就用这个了2.解压进入bin目录,找到jmeter.bat启动它,会弹出两个窗口,一个是启动窗口,使用jmeter不可以关了它,另一个是jmeter的工作界面进入界面默…

UliPad 初体验----python 开发利器

学习python 有段时间,最近博客更新比较慢了,空闲时间在零零碎碎的学python ,难成文,也就没整理成博客。 学习python 最苦恼的就是没有趁手IDE ,之前学java 时 Eclipse 肯定是不二之选。eclipse pydev 也可以开发python…

Neo4j:找到两个纬度/经度之间的中点

在过去的两个周末中,我一直在处理一些运输数据,并且我想运行A *算法来查找两个车站之间的最快路线。 A *算法将一个EstimateEvaluator作为其参数之一,然后该评估器查看节点的经度/纬度,以确定一条路径是否值得遵循。 因此&#x…

猫狗大战

可行性背包 令dp[i][j]表示选i个人能否达到j这个状态,那么转移就和背包一样了,外层枚举选哪一个(K),2、3层枚举i,j,那么\[dp[i][j] | dp[i-1][j-val[k]];\] 转载于:https://www.cnblogs.com/bullshit/p/9902003.html

SAS的数组array介绍

SAS可以把一组同为数值型或同为字符型的变量合在一起,使用同一个名字称呼,用下标来区分。这与通常的程序设计语言中的数组略有区别,通常的程序设计语言中数组元素没有对应的变量名,而SAS数组每个元素都有自己的变量名。 一、数值型…

python while循环if_详解python基础之while循环及if判断

wlile循环while True表示永远为真,不管是什么条件都会向下执行,下面是写的一个例子。#!/usr/bin/env pythonage 24                            #给age赋一个值while True:                       …