- 1、本文档共14页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
系统的重构
为什么重构?
重构是指在不改变程序功能的前提下改变其结构。重构是一项功能强大的技术,但是执行起来需要倍加小心才行。主要的危险在于可能在不经意中引入一些错误,尤其是在进行手工重构的时候更是如此。这种危险引发了对重构技术的普遍批评:当代码不会崩溃的时候为什么要修改它呢?
您需要进行代码重构的原因可能有以下几个:传说中的第一个原因是:需要继承为某个古老产品而开发的年代久远的代码,或者突然碰到这些代码。最初的开发团队已经不在了。我们必须创建增加了新特性的新版本软件,但是这些代码已经无法理解了。新的开发队伍夜以继日地工作,破译代码然后映射代码,经过大量的规划与设计之后,人们将这些代码分割成碎片。历经重重磨难之后,所有这些东西都按照新版本的要求归位了。这是英雄般的重构故事,几乎没有人能在经历了这些之后活着讲述这样的故事。
还有一种现实一些的情况是项目中加入了新的需求,需要对设计进行修改。至于是因为在最初的规划过程中失察,还是由于采用了迭代式的开发过程(比如敏捷开发,或者是测试驱动的开发)而在开发过程中有意引入需求,这两者并没有实质性的区别。这样的重构的规模要小得多,其内容一般涉及通过引入接口或者抽象类来更改类的继承关系,以及对类进行分割和重新组织,等等。
重构的最后一个原因是,当存在可用的自动重构工具时,可以有一个用来预先生成代码的快捷方式——就好比在您无法确定如何拼写某个单词的时候,可以用某种拼写检查工具输入这个单词。比如说,您可以用这种平淡无奇的重构方法生成 getter 和 setter 方法,一旦熟悉了这样的工具,它就可以为您节省很多的时间。
Eclipse 的重构工具无意进行英雄级的重构——适合这种规模的工具几乎没有——但是不论是否用到敏捷开发技术,Eclipse 的工具对于一般程序员修改代码的工作都具有无法衡量的价值。毕竟任何复杂的操作只要能够自动进行,就可以不那么烦闷了。只要您知道 Eclipse 实现了什么样的重构工具,并理解了它们的适用情况,您的生产力就会得到极大的提高。
要降低对代码造成破坏的风险,有两种重要的方法。第一种方法是对代码进行一套完全彻底的单元测试:在重构之前和之后都必须通过这样的测试。第二种方法是使用自动化的工具来进行重构,比如说 Eclipse 的重构特性。
将彻底的测试与自动化重构结合起来就会更加有效了,这样重构也就从一种神秘的艺术变成了有用的日常工具。为了增加新的功能或者改进代码的可维护性,我们可以在不影响原有代码功能的基础上迅速且安全地改变其结构。这种能力会对您设计和开发代码的方式产生极大的影响,即便是您没有将其结合到正式的敏捷方法中也没有关系。
Eclipse 中重构的类型 Eclipse 的重构工具可以分为三大类(下面的顺序也就是这些工具在 Refactoring 菜单中出现的顺序):
对代码进行重命名以及改变代码的物理结构,包括对属性、变量、类以及接口重新命名,还有移动包和类等。
改变类一级的代码逻辑结构,包括将匿名类转变为嵌套类,将嵌套类转变为顶级类、根据具体的类创建接口,以及从一个类中将方法或者属性移到子类或者父类中。
改变一个类内部的代码,包括将局部变量变成类的属性、将某个方法中选中部分的代码变成一个独立的方法、以及为属性生成 getter 和 setter 方法。
还有几个重构工具并不能完全归入这三个种类,特别是 Change Method Signature,不过在本文中还是将这个工具归入第三类。除了这种例外情况以外,本文下面几节都是按照上面的顺序来讨论 Eclipse 重构工具的。
物理重组与重命名 显然,您即便没有特别的工具,也可以在文件系统中重命名文件或者是移动文件,但是如果操作对象是 Java 源代码文件,您就需要编辑很多文件,更新其中的 import 或 package 语句。与此类似,用某种文本编辑器的有哪些信誉好的足球投注网站与替换功能也可以很容易地给类、方法和变量重新命名,但是这样做的时候必须十分小心,因为不同的类可能具有名称相似的方法或者变量;要是从头到尾检查项目中所有的文件,来保证每个东西的标识和修改的正确性,那可真够乏味的。
Eclipse 的 Rename 和 Move 工具能够十分聪明地在整个项目中完成这样的修改,而不需要用户的干涉。这是因为 Eclipse 可以理解代码的语义,从而能够识别出对某个特定方法、变量或者类名称的引用。简化这一任务有助于确保方法、变量和类的名称能够清晰地指示其用途。
我们经常可以发现代码的名字不恰当或者令人容易误解,这是因为代码与最初设计的功能有所不同。比方说,某个用来在文件中查找特定单词的程序也许会扩展为在 Web 页面中通过 URL 获取 InputStream 的操作。如果这一输入流最初叫做 file ,那么就应该修改它的名字,以便能反
您可能关注的文档
- 陈城中心2012~2013学年第一学期学校工作意见.doc
- 光纤通信考查报告.doc
- 运动估计算法实现.doc
- 重构(zhang).doc
- 计算机算法实验报告.doc
- 嵌入式虚拟仪器模拟通道的远程重构技术.doc
- 中国传媒产业规制的解构与重构.doc
- 动态能力(环境洞察能力、学习吸收能力、变革更新能力、快速反应能力和整合重构能力)测量量表.doc
- 02突围——时下课堂教学的检视与重构(2012.7.22).doc
- 2025年新能源汽车充电设备研发与充电桩维护成本风险评估报告.docx
- 2025年山东烟台中考语文试题及答案.pdf
- 1 《金融衍生品市场与金融创新关系研究》教学研究课题报告.docx
- 2025年物流与供应链行业物流园区运营模式创新报告.docx
- 基于故事讲述的初中物理实验教学策略研究教学研究课题报告.docx
- 初中历史教学中地方历史人物事迹挖掘与传承教学研究课题报告.docx
- 建筑农民工权益保障与用工模式变革下的劳动力市场供求平衡研究报告.docx
- 2025年工业大数据平台建设对工业设计创新的影响研究报告.docx
- 初中生数字素养教育中健康意识培养的实践案例与启示教学研究课题报告.docx
- 社区宠物粪便处理现状调查与小学生环保教育效果评估教学研究课题报告.docx
- 跨境电商平台2025年运营策略优化与供应链管理报告.docx
文档评论(0)