Eclipse中自动重构实现探索-Java基础-Java-编程开发

Java 领域 Eclipse 的代码重构策略 代码重构是软件开发过程中至关重要的环节,它能够改善代码的内部结构,而不改变其外部行为。在 Java 开发中,使用 Eclipse 作为集成开发环境(IDE)进行代码重构具有诸多优势。本文的目的在于全面介绍在 Eclipse 中对 Java 代码进行重构的各种策略,涵盖从基本的重构操作到复杂的重构场景。范围包括但不限于重命名变量、提取方法、移动类、封装字段等常见的重构任务,以及如何利用 Eclipse 的自动化工具和特性来高效完成这些任务。 阅读详情
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>

   本文用eclipse的自动重构功能对一个程序实例进行重构,目的是探索Eclipse自动重构可以在多大程度上辅助重构这个过程。程序实例使用《Refactoring:Improving the Design of Existing Code》一书中的例子。

   Eclipse的自动重构功能能够很好地支持各种程序元素的重命名,并自动更新相关的引用。Eclipse能够支持方法、字段在类之间移动,并自动更新引用。Eclipse较好地支持内联字段、函数的更新替换。Eclipse较好地支持抽取方法、变量等程序元素。

   重构的过程是一个不断尝试和探索的过程。Eclipse的重构支持撤销和重做,并且能够预览重构结果,这些是很实用的功能。

   Eclipse的重命名、抽取方法、移动、内联功能、更改方法特征符等代码结构级别的重构方法,是比较成熟同时也值得使用的功能。至于设计结构上的重构,eclipse还不能很好地支持。但是作者相信,自动重构的理念应该是"工具辅助下的重构工作",人仍然承担大部分重构工作。

   一、预备工作

   本文使用《Refactoring:Improving the Design of Existing Code》一书第一章的例子。重构前的代码及每一步重构后的代码见附件。读者最好配合《Refactoring:Improving the Design of Existing Code》一书阅读本文。

   Eclipse使用如下版本:

   同时安装了中文语言包。

   二、重构第一步:分解并重组statement()

   目的:

   1、 把statement()函数中的swich语句提炼到独立的函数amountFor()中。

   2、 修改amountFor()参数命名

   重构方法:

   Extract Method
   Rename Method

   方法:

   1、选中swich语句的代码块,在右键菜单中选择"重构/抽取方法",出现参数对话框。Eclipse自动分析代码块中的局部变量,找到了两个局部变量:each和thisAmount。其中,each只是在代码块中被读取,但thisAmount会在代码块中被修改。按照重构Extract Method总结出来的规则,应该把each当作抽取函数的参数、thisAmount当作抽取函数的返回值。然而Eclipse并不做区分,直接把这两个变量当作抽取新方法的参数,如图。

   我们的目的是把在抽取函数中不会被修改的each作为参数;会被修改的thisAmount作为返回值。解决的办法是,把 double thisAmount = 0; 这行代码移到switch语句的上面,变成这样:

double thisAmount = 0;
switch(each.getMovie().getPriceCode()){
  case Movie.REGULAR:
   thisAmount = 2;
   if(each.getDaysRented()>2)
   thisAmount = (each.getDaysRented()-2)*1.5;
   break;

  case Movie.NEW_RELEASE:
   thisAmount = each.getDaysRented()*3;
   break;

  case Movie.CHILDRENS:
   thisAmount = 1.5;
   if(each.getDaysRented()>3)
    thisAmount = (each.getDaysRented()-3)*1.5;
   break;
}

   选中这段代码,在右键菜单中选择"重构/抽取方法",eclipse这次变得聪明点了,如图。

   选择"预览"按钮预先查看重构后的结果,符合我们最初的目的。

   选择"确定"按钮,重构后的代码片断如下:

public String statement() {
  double totalAmount = 0;
  int frequentRenterPoints = 0;
  Enumeration rentals = _rentals.elements();
  String result = "Rental Record for " getName() "/n";

  while(rentals.hasMoreElements()){
   Rental each = (Rental)rentals.nextElement();

  double thisAmount = amountFor(each);

   frequentRenterPoints ;
   if((each.getMovie().getPriceCode())==Movie.NEW_RELEASE &&each.getDaysRented()>1)
    frequentRenterPoints ;

    result = "/t" each.getMovie().getTitle() "/t" String.valueOf(thisAmount) "/n";
    totalAmount = thisAmount;
  }

  result = "Amount owed is " String.valueOf(totalAmount) "/n";
  result = "You earned " String.valueOf(frequentRenterPoints) " frequent renter points";

  return result;
}

/**
* @param each
* @return
*/
private double amountFor(Rental each) {
  double thisAmount = 0;
  switch(each.getMovie().getPriceCode()){
   case Movie.REGULAR:
    thisAmount = 2;
    if(each.getDaysRented()>2)
     thisAmount = (each.getDaysRented()-2)*1.5;
    break;

   case Movie.NEW_RELEASE:
    thisAmount = each.getDaysRented()*3;
    break;

   case Movie.CHILDRENS:
    thisAmount = 1.5;
    if(each.getDaysRented()>3)
     thisAmount = (each.getDaysRented()-3)*1.5;
    break;
  }
  return thisAmount;
}

   2、选中amountFor()的参数each,在右键菜单中选择"重构/重命名",在对话框中输入新的名称:aRental,选择确定,amountFor()中所有each的引用全部被替换成新的名称。用同样的办法修改amountFor()中的局部变量thisAmount为result。重构后的amountFor()代码如下:

/**
* @param aRental
* @return
*/
private double amountFor(Rental aRental) {
  double result = 0;
  switch(aRental.getMovie().getPriceCode()){
   case Movie.REGULAR:
   result = 2;
    if(aRental.getDaysRented()>2)
    result = (aRental.getDaysRented()-2)*1.5;
    break;

   case Movie.NEW_RELEASE:
   result = aRental.getDaysRented()*3;
    break;

   case Movie.CHILDRENS:
   result = 1.5;
    if(aRental.getDaysRented()>3)
     result = (aRental.getDaysRented()-3)*1.5;
    break;
  }
  return result;
}

[1] [2] [3] [4]

Eclipse vs IDEA:Java开发终极对决 摘要: Eclipse与IntelliJ IDEA是Java开发两大主流IDE,各具特色。IntelliJ IDEA以智能代码补全、AI集成和高效调试见长,适合企业级开发;Eclipse则凭借轻量级设计、开源免费及高定制性,成为预算有限团队的首选。性能上,IntelliJ对硬件要求更高但响应更快,Eclipse则更省资源。未来,AI与云原生支持是两者共同趋势。建议根据项目需求选择:追求效率选IntelliJ,注重灵活性与低成本选Eclipse,复杂场景可搭配VS Code使用。(150字)** 阅读详情

相关推荐

Eclipse 提升 Java 开发效率的 10 个方法

本文旨在为Java开发者提供一套完整的Eclipse效率提升方案,涵盖从基础配置到高级技巧的各个方面。我们将重点介绍那些被大多数开发者忽视但能显著提升效率的功能和方法。文章首先介绍基础配置优化,然后深入代码编辑、调试和重构技巧,最后探讨团队协作和性能优化方法。每个方法都配有详细说明和实际案例。代码模板(Code Template): 预定义的代码片段,可通过快捷方式插入重构(Refactoring): 在不改变代码外部行为的前提下改进代码结构热键(Hotkey): 执行特定操作的键盘快捷键组合。

Java大师兄的博客 964

Eclipse简明使用教程(java集成开发环境)

Eclipse使用教程 目录 1.Eclipse的基本概念 2.Eclipse创建Java文件 3.eclipse代码提示功能 4.快捷键的使用 5.代码自动生成功能: 6.代码注释 7.代码重构(重点) 下载软件: Eclipse官方网站:点我 下载Eclipse: 下载完成后,直接解压就能使用: 打开后选择工作空间(works...

Violinlins 3万+

Java 领域中 Eclipse 的代码重构方法

本文旨在为Java开发者提供全面的Eclipse代码重构指南,涵盖从基础到高级的各种重构技术。范围包括Eclipse IDE中内置的重构功能、第三方插件支持的重构方法,以及如何将这些技术应用于实际项目开发中。文章首先介绍重构的基本概念和Eclipse的重构功能,然后详细讲解各种重构方法,包括实际操作步骤和代码示例。接着讨论重构的最佳实践和常见问题,最后展望重构技术的未来发展趋势。重构(Refactoring):在不改变代码外部行为的前提下,对代码内部结构进行修改,以提高代码的可读性、可维护性和可扩展性。

AI开发架构师 1110

Eclipse使用基础教程

                                                    Eclipse使用教程  目录&nbs...

xiao_suan_cai的博客 3万+

Java 开发:Eclipse 的代码重构工具推荐

本文旨在为Java开发者提供全面的Eclipse重构工具指南,覆盖从基础到高级的重构技术。我们将重点分析Eclipse内置的重构功能,同时也会介绍值得安装的第三方重构插件。文章首先介绍重构的基本概念,然后详细解析Eclipse的各项重构功能,接着通过实际案例展示重构过程,最后讨论高级技巧和工具扩展。重构(Refactoring):在不改变代码外部行为的前提下,改善代码内部结构的实践代码异味(Code Smell):表明可能有更深层次问题的代码特征安全重构(Safe Refactoring)

Java大师兄的博客 449

Java 领域中如何利用 Eclipse 进行代码重构优化

在 Java 开发过程中,随着项目的不断推进和功能的持续增加,代码往往会变得复杂、冗余且难以维护。代码重构优化的目的在于改善代码的内部结构,在不改变软件外部功能的前提下,提高代码的可读性、可维护性和可扩展性。本文章的范围聚焦于如何利用 Eclipse 这一强大的 Java 集成开发环境(IDE)来实现代码的重构优化,涵盖了 Eclipse 中各种重构功能的使用方法、实际应用场景以及相关的理论知识。

AI开发架构师 1122

在Eclipse中对Java代码重构初探

原文选择自 sxhv998 的 优快云 Blog修改:zieckey(zieckey@yahoo.com.cn) Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务(图1),用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括 Java 开发工具(Java Development Tools,JDT

聪明的解释器 4340

揭秘Java代码重构自动化工具:3大神器对决,哪个才是你的最佳拍档?

无论是新手还是资深开发者,在选择适合自己的Java代码重构工具时都应该考虑项目的具体需求和个人偏好。希望通过今天的介绍,你能找到那个能让你事半功倍的好帮手。记住,好的工具只是开始,持续学习和实践才是成为高手的关键!

java专栏 1246

Eclipse初学者详细使用教程(java集成开发环境)

                                            &...

CSer 4413

《Java重构革命:集成自动化工具与持续集成,重塑代码质量》

在软件开发的世界里,代码就像城市的街道,随着时间推移会变得越来越复杂和难以维护。想象一下,如果一座城市没有规划师定期优化道路布局,那么交通拥堵将不可避免地发生。同样地,在软件项目中,如果没有适当的重构实践,技术债务将会累积,最终拖慢整个项目的进展。幸运的是,Java社区已经为我们准备了一系列强大的重构工具以及成熟的持续集成(CI)流程,帮助开发者们保持代码库的整洁有序,并确保每一次提交都能顺利通过测试,达到高质量的标准。

墨夶的博客 1586

实测有效防止colab自动断开连接

实测有效防止colab自动断开连接

Thebest_jack的博客 1万+

ECLIPSE插件开发:AI如何帮你自动生成代码

我使用的是最新版的ECLIPSE IDE,安装了PDE(插件开发环境)组件。这里有个小技巧:建议创建一个独立的开发工作空间,专门用于插件开发,避免和日常开发环境冲突。最近在做一个ECLIPSE插件开发的项目,需要实现一个"AI重构"功能。的一个明显感受是,它让AI辅助开发变得非常简单。不需要复杂的配置,打开网页就能用,生成的代码质量也不错。插件开发完成后,可以导出为jar文件,通过ECLIPSE的插件安装机制分发。的AI功能,只需要描述需求就能生成可用的代码框架,然后稍作调整就能集成到插件中。

NightshadeEagle34的博客 1212

Gradle进阶:4:结合Sonarqube进行代码审查

作为代码质量检查的流行工具,比如Sonarqube能够检查代码的“七宗罪”,跟代码结合起来能够更好地提高代码的质量,这篇文章将会介绍如何结合gradle和sonarqube对代码质量与测试覆盖率进行分析。

知行合一 止于至善 1万+

Eclipse实战重构与测试

Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务(图1),用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括 Java 开发工具(Java Development Tools,JDT)。Eclipse Platform 为工具开发提供一组健壮的服务和 API。它使来自完全不同的供应商的工具之间的集成变得平

天高任鸟飞,海阔凭鱼跃 1266

太速科技-基于DSP TMS320C6678+FPGA XC7V690T的6U VPX信号处理卡

当多块盘并行工作时,存储阵列读写带宽成指数增长,2块盘则≥4GB/s,4块盘则≥8GB/s,以此类推。存储阵列的存储容量由单盘配置决定,目前单块NVME存储盘存储容量可选择512GB、1TB、2TB、4TB、8TB、16TB。硬盘管理通过文件系统,FPGA的PCIeX4与 6U VPX主板互联,操作系统直接映射管理硬盘,也可以通过前面板QSFP+ 光纤导出给其他服务器设备。本方案优势就是集中的进行采集,存储,计算一体化,降低硬件成本、功耗,减小设备体积、重量。信号处理,无线电通信领域。

Orihard_的博客 678

新手避坑指南:用PIC16F15355开发板和MCC完成第一个UART通信项目

本文为新手提供了使用PIC16F15355开发板和MPLAB代码配置器(MCC)实现首个UART通信项目的完整指南。通过图形化配置系统时钟、UART参数并自动生成驱动代码,手把手教学如何避开常见陷阱,快速完成从环境搭建、代码编写到调试输出的全流程,助力开发者高效入门PIC单片机开发。

bash7scripter的博客 727

Java编程到底是用idea好还是eclipse好?

IDEA 全称 IntelliJ IDEA 是java编程语言开发的集成环境。IntelliJ在业界被公认为最好的java开发工具,尤其在智能代码助手、代码自动提示、重构、JavaEE支持、各类版本工具(git、svn等)、JUnit、CVS整合、代码分析、 创新的GUI设计等方面的功能可以说是超常的。 IDEA是JetBrains公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主。它的旗舰版本还支持HTML,CSS,PHP,MySQL,Python等。 只可惜免费版只

qq_49249150的博客 1万+

【四足机器人项目实战】波士顿spot四足机器人机工程设计及实现分析

主要介绍了波士顿spot机器人的发展历史、四足机器人的硬件系统及电机执行器组成包括硬件系统、关节电机执行器,机载传感器机处理器及电气连接等。概述了四足机器人规划控制、感知、定位及局部地图的相关算法方向。

qq_35635374的博客 4999

eclipse重构_使用Eclipse进行重构

Eclipse平台 Eclipse是由Object Technology International(OTI)的团队创建的开源IDE,负责IDE的VisualAge for Java以及ENVY Developer和Smalltalk版本。 Eclipse是免费的开放源代码工具,并且将成为WebSphere Workbench的基础。 您可以通过加入Eclipse社区(参见了解更多相关信息...

cuxiong8996的博客 618

【七.三维视觉与视频分析】【1.点云处理:PointNet++/PointTransformer】

各位老铁,今天咱们要聊的可不是普通的二维图像处理,而是三维视觉领域最硬核的技术——点云处理。从最早的PointNet到如今的PointTransformer,这场技术进化堪比三维版的"像素革命"。今天咱们就深入解剖两大里程碑:PointNet++和PointTransformer,保证让你看完全文就能在点云领域横着走!想象一下,你抓了把沙子撒在空中,每粒沙子的位置都是三维坐标——这就是点云的典型形态。最后送大家一句话:点云处理就像在三维宇宙中寻找星辰的轨迹,既要望远镜的宏观视野,也要显微镜的细致入微。

商务合作|问题讨论|交流学习 请联系作者微信,加微信请务必注明来意,博客主页有联系方式 474

RAG系统中Embedding模型选型实战

本文详细介绍了RAG系统中Embedding模型选型实战,希望能对学习RAG的同学们有所帮助。 文章目录 1. 前言 2. 思路解析 3. 测评数据集构建 3.1 步骤一 3.2 步骤二 3.3 数据示例 3.4 总结 4. 实战代码 4.1 本地模型 4.2 使用第三方的Embedding模型API

herosunly的博客 17万+

解决 Java 开发痛点:nvim-java 自动重构、代码格式化与导入管理

nvim-java 是一款专为 Neovim 打造的 Java IDE 插件,通过 JDTLS 封装提供强大的 Java 开发功能。作为一站式解决方案,它深度整合了自动重构、智能代码格式化和自动导入管理等核心特性,让开发者在 Neovim 中享受流畅高效的 Java 开发体验。 ## 为什么选择 nvim-java? Java 开发中,手动处理代码重构、格式统一和导入管理往往耗费大量时间。nv

gitblog_01178的博客 710

【人工智能】架构演进:基于本体论与 LLM Agent 的供应链备件决策闭环实践

本文探讨了如何将本体论(Ontology)与大语言模型(LLM)Agent结合,构建供应链备件管理的智能决策系统。针对LLM在垂直领域存在的幻觉和逻辑缺陷问题,提出通过本体论建立结构化知识框架,形成四层架构:知识建模、动态感知、深度分析和决策闭环。系统利用图数据库实例化领域本体,融合多源数据实现实时感知,结合图谱推理和时序预测进行确定性分析,最终通过工具调用完成决策执行。技术选型推荐Gemini 1.5 Pro、Neo4j和LangChain等工具,实现从自动化到智能化的升级。该架构为工业领域提供了可解释、

奶爸的编程之路,也就一周冷个三天 171

Eclipse 重构菜单

Eclipse重构神器:20招快捷键提升编码效率 摘要:本文介绍了Eclipse IDE中Refactor菜单的强大功能,通过20个高频重构快捷键帮助开发者安全高效地修改代码。重点推荐6个核心快捷键:重命名(Alt+Shift+R)、提取局部变量(Alt+Shift+L)、提取方法(Alt+Shift+M)等,这些操作可以自动完成变量、方法和类的修改,并保持项目一致性。文章还提供了18种常见重构场景的解决方案,如提取常量、修改方法签名、安全删除等,以及8个实战组合技巧。建议配合Spring Tools等插件

likuoelie的博客 668

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

jdt eclipse_探索Eclipse JDT中的重构功能

Eclipse中的重构功能使其成为现代的Java集成开发环境(IDE),而不是普通的文本编辑器。 使用重构,您可以轻松地对代码进行更改,而不必担心会破坏其他地方的内容。 使用重构,您可以编写一些代码来查看其是否工作而不必担心其外观,然后使用重构工具快速轻松地将该代码转换为干净且高度模块化的代码。 本文介绍并显示了如何使用Eclipse中提供的一些强大的重构功能。 重构类型 改名 重...

cuxiong8996的博客 476

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

上一篇: Java源码分析:深入探讨Iterator模式-Java基础-Java-编程开发
下一篇: 如何使用Java编写多线程程序-Java基础-Java-编程开发
java169
博客等级 码龄19年 27粉丝 2568原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值