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

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

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

相关文章

微服务发展的历史_“美丽新羌 光照未来” 新羌社区开展微视频宣传片拍摄活动...

见圳客户端、深圳新闻网讯(记者 王志明 通讯员 甘力宇)为记录新羌社区的历史变迁,弘扬新羌人与时俱进、开拓进取的创新精神,宣传社区党委、社区一线工作者及社区居民的感人事迹和精神,展现深圳社区发展新风貌,2020年10月&#xff…

linux中扫描仪驱动程序,VueScan For Linux通用扫描仪驱动下载_VueScan For Linux通用扫描仪驱动官方下载-太平洋下载中心...

VueScan For Linux通用扫描仪驱动是一款提供 Linux 使用的图片扫描工具,它具有各种高级硬件能力使用非常广泛的的扫描仪软件,支持EPSon、HP、Nikon 和Canon 品牌的扫描仪设备,具有优良的色彩保真度和色彩平衡,可以让用户比平板扫描…

HTML head 头部中的各类标签

HTML <head> 头部 <head> 元素包含了所有的头部标签元素。在 <head>元素中你可以插入脚本&#xff08;scripts&#xff09;, 样式文件&#xff08;CSS&#xff09;&#xff0c;及各种meta信息。 可以添加在头部区域的元素标签为: <title>, <style&g…

CSS变量(自定义属性)实践指南

本文翻译自&#xff1a;https://www.sitepoint.com/practical-guide-css-variables-custom-properties/ 转载请注明出处&#xff1a;葡萄城官网&#xff0c;葡萄城为开发者提供专业的开发工具、解决方案和服务&#xff0c;赋能开发者。 Sass和Less这样的预处理器&#xff0c;让…

ffmpeg-win32-v3.2.4 下载_MVBOX下载|MVBOX 7.1.0.4官方版

还是要强调一句&#xff0c;现在市面上很多盗版或者免费的软件&#xff0c;都给一些黑客留下了暗门&#xff0c;所以大家还是支持正版比较好&#xff0c;不要贪图便宜使用盗版软件造成不好的后果。MVBOX播放器功能介绍1、在线卡拉OK2、虚拟摄像头3、画面调色板4、摄像头抠像5、…

饿了么商家电脑版_饿了么企业版荣膺“2020中国十大影响力人力资源品牌”大奖...

11月6日&#xff0c;由MeetHR GROUP主办的2020大中华地区HRVP高峰论坛在上海落幕。饿了么企业版凭借自身产品在人力资源管理与服务方面的创新实践&#xff0c;荣获“2020 中国十大影响力人力资源品牌(薪酬福利类)”殊荣。本次评选&#xff0c;据主办方介绍&#xff0c;旨在激励…

navicat连接linux远程数据库,使用Navicat forMySql远程连接Linux 系统上的数据库

使用Navicat for MySql远程连接Linux 系统上的数据库解决mysql"Access denied for userrootIP地址"问题1.问题说明&#xff1a;在MYSQL 中&#xff0c;用远程软件登陆服务器&#xff0c;有时出现&#xff1a;Access denied for user rootlocalhost出现这种问题&#…

HTTPS 通俗简介

为什么需要HTTPS 9个问题搞懂 https 来源 HTTP是明文传输的&#xff0c;也就意味着&#xff0c;介于发送端、接收端中间的任意节点都可以知道你们传输的内容是什么。这些节点可能是路由器、代理 等。 举个最常见的例子&#xff0c;用户登陆。用户输入账号&#xff0c;密码&am…

CSS Modules入门教程

为什么引入CSS Modules 或者可以这么说&#xff0c;CSS Modules为我们解决了什么痛点。针对以往我写网页样式的经验&#xff0c;具体来说可以归纳为以下几点&#xff1a; 全局样式冲突 过程是这样的&#xff1a;你现在有两个模块&#xff0c;分别为A、B,你可能会单独针对这两…

热电偶校验仪_热电偶校验方法_热电偶的使用方法及维修经验

一、遵照仪表接线图进行准确接线通电后&#xff0c;仪表先是显示仪表的热电偶分度号&#xff0c;接着显示仪表量程范围&#xff0c;再测仪表显示设定温度&#xff0c;数显仪表显示测量温度。若仪表数码管显示不是发热体的温度&#xff0c;而显示“OVER”、“0000”或“000”等状…

Java 7:满足Fork / Join框架

JSR-166&#xff08;y&#xff09;是Java 7中包含的此新功能的正式名称。如果您发现名称中有一个“ y”&#xff0c;这是因为自Java 5起就添加了JSR-166&#xff08;并发实用程序&#xff09; &#xff0c;但它不会就此停止&#xff0c;因为已经有计划在JSR-166&#xff08;e&a…

css3总结之居中

居中在前端布局上很常见&#xff0c;也很常用&#xff0c;也是最基本的技巧。居中效果在方向控制上基本可以分解成水平居中&#xff0c;垂直居中和水平垂直居中。 针对调整的元素不同&#xff0c;具体的处理方式上有些差异。这里我们先不讲绝对定位下的居中&#xff0c;绝对定位…

福州java培训哪里好_南通java培训哪家好

渡课IT教育成立于2006年&#xff0c;14年来&#xff0c;我们累计输送学员达 6000 &#xff0c;其中南通地区输送50%&#xff0c;上海 40%&#xff0c;其他地区 10%&#xff0c;学员1年后的平均薪水达 9860 元&#xff1b;受到1000用人单位的赞誉与支持。Java开发的需求量在北上…

研究僵局–第2部分

调查死锁时最重要的要求之一就是要研究死锁。 在我的上一个博客中&#xff0c;我编写了一个名为DeadlockDemo代码&#xff0c;该代码使用一堆线程在一系列银行帐户之间转移随机数&#xff0c;然后陷入僵局。 该博客运行该代码以演示获取线程转储的几种方法。 线程转储只是一个…

连锁便利店管理系统有什么用

连锁便利店管理系统对于连锁便利店的运营和管理非常有用。以下是一些常见的用途&#xff1a; 1. 库存管理&#xff1a;连锁便利店通常需要管理多个门店的库存&#xff0c;管理系统可以帮助实时掌握各个门店的库存情况&#xff0c;包括商品数量、进货记录、库存调拨等。这样可以…

浏览器打印设置横向打印_爱普生打印机无线连接设置

1、首先&#xff0c;把epsonl385打印机插上电源通电&#xff0c;待自检完成后&#xff0c;便可以设置。如果用户家里的无线路由器带有WPS(Wi-Fi Protected Setup)或QSS(又称快速安全设置)功能&#xff0c;那就简单多了。2、通过WPS或QSS无线路由器按钮连接&#xff0c;给无线路…

linux python定时任务调度,Python下定时任务框架APScheduler的使用

1.APScheduler简介&#xff1a;APScheduler是Python的一个定时任务框架&#xff0c;可以很方便的满足用户定时执行或者周期执行任务的需求&#xff0c;它提供了基于日期date、固定时间间隔interval 、以及类似于Linux上的定时任务crontab类型的定时任务。并且该框架不仅可以添加…

研究僵局–第1部分

我敢肯定我们都去过那里&#xff1a;太晚了&#xff0c;您饿了&#xff0c;服务器已挂起&#xff0c;或者应用程序正在以蜗牛的速度运行&#xff0c;并且有人喘着气想要您解决问题&#xff0c;然后再去解决。 您的应用程序意外挂起的可能原因之一是称为死锁的线程问题。 无需赘…

使用Vue.js和Axios从第三方API获取数据 — SitePoint

更多的往往不是&#xff0c;建立你的JavaScript应用程序时&#xff0c;你会想把数据从远程源或消耗一个[ API ]&#xff08;https&#xff1a;/ /恩。维基百科。org /维基/ application_programming_interface&#xff09;。我最近看了一些[公开]&#xff08;https://github.co…

区位码怎么知道点阵里的起始点_自身免疫疾病的GAPS起始饮食改良版

写这篇文章的原因如果您已经关注我的博客一段时间&#xff0c;您知道我开始使用GAPS饮食&#xff0c;然后转换到AIP饮食&#xff0c;因为我仍在努力治疗炎症和自身免疫的发作。 Katy Haldiman 有同样的经历&#xff0c;我们并不孤单。许多患有自身免疫性疾病的人在 GAPS 上挣扎…