![在Eclipse中建立新的重构效率_第1页](http://file3.renrendoc.com/fileroot_temp3/2021-12/4/7cf5ffea-c4a0-46a7-aea9-64a0d5c5f88c/7cf5ffea-c4a0-46a7-aea9-64a0d5c5f88c1.gif)
![在Eclipse中建立新的重构效率_第2页](http://file3.renrendoc.com/fileroot_temp3/2021-12/4/7cf5ffea-c4a0-46a7-aea9-64a0d5c5f88c/7cf5ffea-c4a0-46a7-aea9-64a0d5c5f88c2.gif)
![在Eclipse中建立新的重构效率_第3页](http://file3.renrendoc.com/fileroot_temp3/2021-12/4/7cf5ffea-c4a0-46a7-aea9-64a0d5c5f88c/7cf5ffea-c4a0-46a7-aea9-64a0d5c5f88c3.gif)
![在Eclipse中建立新的重构效率_第4页](http://file3.renrendoc.com/fileroot_temp3/2021-12/4/7cf5ffea-c4a0-46a7-aea9-64a0d5c5f88c/7cf5ffea-c4a0-46a7-aea9-64a0d5c5f88c4.gif)
![在Eclipse中建立新的重构效率_第5页](http://file3.renrendoc.com/fileroot_temp3/2021-12/4/7cf5ffea-c4a0-46a7-aea9-64a0d5c5f88c/7cf5ffea-c4a0-46a7-aea9-64a0d5c5f88c5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、在eclipse中建立新的重构效率对重构的强壮支持是软件开发职员爱好eclipse的一个最为需求的起因。而eclipse另冇 一个至少与重构不相上下的长处,那等于其近乎无懈可击的可放人性。这两者的联系意味着 咱们概略按照自己的需求来创建展新的重构功用。介绍重构在当代软件开发过程屮扮演着需求的角色,它概略或许减轻软件开发职员的工作担 负,前进软件开发的生制作从命。为了阐明重构的需求性,咱们在这里引用了 developerworks 上david carew提供的关于重构的教程中的一段话:那时,一个开发者的工作人一部分在于对现有的代码进行修改,而不是草拟写新的代码。 简单的修改概略或许包括对现冇代
2、码进行添加。可是,多样化的修改或放人的窜改会使软件 内查构造初阶恶化。重构窜改软件的内查构造使得软件更易相识并且在不需求窜改其显著的 行为的状况下使得修改的代价也更小。在java软件开发过程中,颠末运用eclipse提供的 重构工具,咱们至少获得了如下长处:1. 终极制作品更加强壮:咱们对挨次代码的修改将不太概略或许堕落,呈现脱漏修改 的概略或许变少,即便呈现标题问题也概略或许颠末undo功用回退到重构前的状态。2. 前进了生制作从命。一样平常一次重构概略或许搞定对挨次代码的多处改变。最为 显着的例了多是eclipse提供的rename重构,它概略或许在修改称说的同时响应的变更全 数的引用。e
3、clipse为咱们捉供了多种实用的重构功用,在软件开发过程屮运川这些重构概 略或许给咱们带来极大的长处。可是,针对每个开发职员的特殊需求,总有一些争切需求的 功用是不克不及颠末已冇的重构来获得的。这个时辰,咱们概略对eclipse平台进行一些放 大,创建适应咱们口己需求的重构。假设这个重构刚好概略或许适宜大过量人的需求,咱们 也概略像别的eclipse的contributor相同,将咱们的重构贡献给eclipse社区。从此,咱们将颠末一个例子來展示如安在eclipse屮创建新的重构功用。咱们这里创建 的重构将用于迁徙junit的测试用例。lifl们晓得,在目丽版木的junit中,一个用于测试的
4、 函数必需以字符串“test”作为方式称说的初阶。而期近来口到的junit 4中,一个”tcst“的 annotation被用于表明方式是一个测试方式。咱们将要创建的重构将搞定这个迁徙工作,即 在全数的以“test”初阶的方式早年加上ntestn标记。test annotation还概略包括一个 timeout属性用来规定方式的最大实行时间,咱们在统率中提供了一个页面供用户繁华是否 需求timeout属性。下场预览为了给读者一个直观的感到,咱们下面起首介绍本文中例子的理论运行成就。在浏览完 木文來口,读者朋友也概略或许顺遂的搞定相同的功用。发动例子挨次捉供的refa首席技术官1來fl,咱们获得
5、了一个由三个页面构成的统率。 在第一个页而屮,用户概略繁华是否需求timeout参数,并且用户概略或许设置timeout参 数的值。图1输入参数当用户输入参数结束來h,颠末单击next按钮咱们将进入f个页面。统率将进行初 始前提杏抄与终极前提杏抄,并将杳抄的下场反馈给用户。在图2屮咱们概略看到,初始前 提与终极前提都畸形,因而咱们概略进入下一步。图2显示前提查抄从此是预览窗口(图3),统率用直观的界面显示了在运用统率来口,咱们将会对源代码 组成怎样的改变。用户概略在这个页面中判断终极的修改是否适宜自己的需求。其它,用户 也概略或许繁华性的取消对某些文件的修改。当用户查抄预览页面确认不冇标题问题
6、來id ,用户概略按下finish按钮从而搞定重构。 这个时辰,源代码会制作牛修改,末端的f场卜列所示:_m 1package main;public class testsomething test(timeout=500)public void testsomething()小我私家结构和流程在eclipse中,一个重构操纵主要由以下三个部份组成:1. refactoringwizard类:refactoringwizard提供了指导式的用户界血来引导用户搞 定重构工作。不璽要我们做任何工作,eclipse已经通过refactoringwizard为我们提供了 预览页面、条件查抄页面以及u
7、ndo/redo等屈从。我们重耍承继这个类从而为重构进程提供 特定的用户界面。2. refactoring类:refactoring类搞定详细的定位和批改代码屈从。为了创建新的 refactoring,我们重要承继这个类并搞定重构的逻辑部份。3. ast和astparser:在refactoring类中,我们重要对代码发展定位和批改,这可以 通过ast机制来搞定。ast是abstract syntax tree的简称,它也许将java代码解析成为 一个树形结构。在操纵了 ast树z后,对源代码的修篡改成了对ast树的遍历、变化节点属 性,以及插入和删除节点等。一个范例的重构操纵流程以下所示:1
8、. 用户决定要发展重构的对象,通过菜单项或按钮发起重构操纵。2. 创建详细的 refactoring 类,弹出 refactoringwizardo3. refactoringwizard和用八交互,引导用户输出紧要的参数;refactoringwizard调 用refactoring类的断数发展条件查抄。4. refactoring类创建ast,并操纵其对源代码发展定位和批改。这里发展的批改并不 直策应用到源代码上,而是被糊口成change对彖,供refactoring框架应用。5. refactoringwizard调川refactoring类的函数,得到重构模式的详细刻划静态(即 第4步
9、天生的change对象),浮当时预览界面上,待用户确认。6. 用户确认后refactoring 架将批改代码,重构操纵一了百了。然后,我们将详细先容新建重构种类的各个步伐。创建插件工程在各人对整个零碎构架有了一个可能的了然之后,我们的先容就从创建工程初步。各人 都知道eclipse捉供了很好的扩充性,通过创建插件就也许把我们要添加的重构屈从无缝的 插入到eclipse平台屮。创建插件工程的方法在很多地方都有先容,这里再也不详细讲解。通过菜单 file -> new-> project,决定 plug-in project。点击 next,呈现对话框, 输i'll工程称号ma
10、nage, annotation,蒙受此外选项的默认值。点击next,呈现插件属性配置 的对话框,持续蒙受默认值。点击next,呈现决定插件模板对话框,该工程要在refactor 菜单中添加一个新的菜单项,以是这里我们采纳"hello, world"的插件模板。点击next,批 改"action类称号"的值为annotationmanageaction,点击finish按钮。至此,一个最基木 eclipse工作台的插件工程就被创建出來了。插件工程创建后,缺省进入plug-in斥地透 视图,plug-in manifest编纂器主动打开,浮现这个插件工程的
11、基本静态,如对此外插件 的委托,扩充点,创立(build)的配置静态等等。因为该工程重要用到此外插件的屈从,必 须为其添加到此外插件的委托。在plug-in manifest编纂器点击dependencies页面,在该 页而中的required plug-ins列表中通过add按钮添加以卜的插件:清单2org.eclipse.jface.textorg.eclipse .itk.core. refacto ringorg.eclipse.itk.ui.refactoringorg.eclipse.jdtorg.eclipse.jdt.core可能也可能经由肓接批改manifest.mf文件搞定
12、。垄断搞定后察看manifest.mf 文件,留意requiw-bundle列表中能否出现了新增长的这几项。manifest.mf文件以下: 清单3manifest-version: 1.0bundle-manifestversion: 2bundle-name: annotation plug-inbundle-symbolicname: man age. a nnotation; singleton :=truebundle-version: 1.0.0bundle-activator: manage.annotation.annotationplugin bundle-localizat
13、ion: pluginrequire-bundie: org.eclipse.ui, org.eclipse.core.r un time, org.eclipse.jface.text, org.eclipse.ltk.core.refactoring,org.eclipse.itk.ui.refactoring, org. eclipse, jdt, org.eclipse.jdt.core eclipseautostart: true在plug-in manifest编纂器屮翻开插件清单文件plugin.xml,或者看到,这个插件扩充了 org.eclipse.ui.actionsets
14、扩充点,这是一个基木的eclipse t.作台的扩充点,颠末扩充它,插 件或者很容易得对eclipse的菜单、东西条发展扩充。这个plugin.xml是”hello,world”插件 模板的清单文件,咱们把它改成切当这个工程的文件。清单如下:清单4<?xml version=h1.0h encoding=hutf-8h?><?eclipse version二”3.0”?><plugin><exte nsionpoint=horg.eclipse.ui.actio nsets”>< actionsetlabel="annotatio
15、n action set"visible=ntruemid=mma nage.a nn otatio n.actio nsetlf><me nulabel=h%refactoring.menu.label11 path=nsourcehid'org.eclipse.jdt.ui.refactoring.me nit><separator name=hreorggroup,7></me nu>< actionclass=nma nage.a nno tation.actions.a nno tationmanageacti on1
16、1icon=nicons/sample.gif,fid='manage.annotatio n. actions. annotatio nm an ageactiort label=n%a nn otation. manage”menubarpath'org.eclipse.jdt.ui.refactoring.me nu/reorggroup”toolbarpath=,reorggrouphtooltip=hmanage annotation in java projecv7></actionset></exte nsion ></plug
17、in>该清单文件表达,在refactor菜单中增加了一个新菜单项"annotation manage",并在东 西条上相应增加了一个按钮。点击菜单项可能按钮的事故由类 "manage.annotation.actions.annotationmanageactionnbh v'j。结尾重要修改的即是 manage.annotation.actions.armotationmanagcaction 类。它承袭了 org.eclipse.ui.iworkbenchwindowactiondelegate接口,该接口用于处置惩罚各种经由扩充点 增加的操作。
18、当菜单项可能按钮被点击吋,这个类就被eclipse i作台装载进来,处置惩罚 转发过来的哀求以及尔后的操作。annotationmanageaction被创立后,一一目用户的选择部分有所窜改,接口的 selectionchanged函数就会被触发,见告用八所选择的部分,也许在这个函数中依照用八的 选择相应的修改操作的可丿ij性可能别的体现屈性。比方在本文的工程屮,咱们巴望只要当川 户选择了一个java模型元素时伎俩丿'v用这个操作,那么就重要在selectionchanged屮增加h 列的代码:清单5public void selectionchanged(iaction action, iselection selection) if (selection.isemptyo)select = n ull;else if (selection instanceof istructuredselection) istructuredselection
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 环保理念下的现代家居设计风格
- 现代饮食文化与胃肠健康的平衡
- 生产环境下的操作规范与质量控制
- 现代企业网络攻击的防范与应对
- 现代企业决策分析与科学决策
- 2023三年级语文下册 第八单元 口语交际:趣味故事会配套说课稿 新人教版
- Unit5 Humans and nature Lesson 1 A sea story 说课稿-2024-2025学年高中英语北师大版(2019)必修第二册001
- 2024-2025学年新教材高中数学 第五章 三角函数 5.7 三角函数的应用(2)说课稿 新人教A版必修第一册
- 2023八年级数学下册 第18章 平行四边形18.1 平行四边形的性质第2课时 平行四边形的性质定理3说课稿 (新版)华东师大版
- 2023二年级语文上册 第二单元 2 树之歌配套说课稿 新人教版
- (人卫版第九版传染病学总论(一))课件
- 压力性损伤护理质控细则及集束化管理措施
- 《批判性思维原理和方法》全套教学课件
- 产后康复-腹直肌分离
- 丙烯-危险化学品安全周知卡
- 粉条加工厂建设项目可行性研究报告
- 《配电网设施可靠性评价指标导则》
- 2024年国家电网招聘之通信类题库附参考答案(考试直接用)
- CJJ 169-2012城镇道路路面设计规范
- 食品企业日管控周排查月调度记录及其报告格式参考
- 产品质量法解读课件1
评论
0/150
提交评论