




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
维护和编写可维护的代码重构概念提出者与倡导者KentBeck:重构概念提出者,Junit的原创者,极限编程的创建人MartinFowler:<重构>一书的作者
ErichGamma:<设计模式>作者,Eclipse开发工具负责人什么是重构重构(refactoring)是这样一个过程:在不改变代码外在行为的前提下,调整程序的内部结构,提高可理解性,降低修改成本。不变的百度桌面,变化的百度技术升级的windows系统,基本不变的界面推测有生命力的软件,界面一成不变,用户量,性能,实际功能不断提升。因此,推测。。。有生命力的软件都需要重构、重写或开始就设计优良,容易扩展.后者可能性不大我们的系统现状ICP系统从2007年一直使用,多人维护,不同系统使用,多版本接口升级。ICP系统的一个实现类。变量和函数声明要5屏才能容纳下.现有代码的问题:超长代码(1)现有代码的问题:超长代码(2)现有代码的问题:超长代码(3)现有代码的问题:超长代码(4)现有代码的问题:超长代码(5)代码坏味道重复不清晰复杂问题如何维护和升级这样的系统呢?重写?重构?维持现状?实际做法业务优先,持续改进。对业务和技术都有利。进行各层次的重构与改进。能用就行,则改进困难,不知道时间消耗在哪里。选择后者!并从代码开始。重构的作用利于团队开发,任务分工改进设计:不必在开始就设计结构精妙的代码,而日趋完善使软件更容易理解,或重构者更能理解代码。提高编程速度。时间细化,问题原子化。重构的第一步建立测试机制(1)本类测试main()(2)单元测试junit其他框架测试工具spring3.x中有介绍(3)调试
重构的原则小步快跑:小步改进,频繁测试两顶帽子原则:重构时不修改功能,修改功能时不重构。重构时机必须随时进行,因为下一次修改代码的人基本还是你。节省的是你自己的时间。随时进行,不用专门的时间,不用专门立项。临近交付的代码,别重构。代码坏味道重复代码过长函数过大类过长参数列冗长的Swich语句,if/else语句过多考虑未来的代码注掉的代码过多的注释再说测试的重要性单元测试有就比没有好,使问题简单化节省调试时间
一本junit书籍的作者说:自己使用junit后,开发同样系统的时间,从500小时缩减到了20小时或更少。提高对质量的信心重新组织函数—分解函数提炼函数:有一段代码可以独立出来,就起个解释用途的名字内联函数:函数太简单,去掉函数,直接引用内容以上两个过程是互逆的。重新组织函数–变量去除临时变量引入解释性变量:解释代码、表达式用途分解临时变量:每个变量一种职责重新组织函数–函数到对象以函数对象取代函数:有一个大函数,对局部的使用让你无法分解出独立的函数。将这个函数放进一个单独的对象中,如此一来局部变量就变成了对象内的字段。然后你可以在同一个对象中将这个大函数分解为小函数。这个很有用,且难,单独列出。参见<重构>P135对象之间搬移特性
迁移的依据:决定把责任放在哪里?搬移函数:从不常用类移到常用类搬移字段:某个字段更多的被另一个类引用,迁移到哪里提炼类:多个责任的类,拆分之引入本地扩展:一个服务类需要额外的函数,但不能修改,建立一个继承源类的子类重新组织数据
面向对象的一大特性:允许你重新定义数据类型封装字段:设定字段私有,建立取值、设值函数改变字段值。解除类之间字段操作的紧耦合关系。也更灵活做更多工作。以对象取代数据值:几个数据项组合使用,就定义一个对象包含组合字段。对象取代数组。这在js中作用更明显。已常量或枚举取代魔法数(简单文字、数字)。简化表达式
多个If/else:每个处理提炼出独立函数或使用多态函数。复杂的条件表达式:合并类似的条件,将条件表达式定义为函数。合并重复条件片段Return取代嵌套条件表达式。减少后续的逻辑混乱。简化函数调用
给类、函数取个好名字:这是计算机语言和人类社会语言的沟通桥梁。<代码大全>中用整个一章来讲命名的重要性将查询函数和修改函数分离保持对象完整性:当用到对象部分数据时,传递整个对象引入参数对象。引入工厂方法处理继承关系
字段上移、下移函数上移、下移提炼子类提炼超类提炼接口重构与设计模式
参考<重构与模式>一书重构降低了过度设计,能在不精细化设计前提下,完成任务重构趋向模式,清除不必要的模式自己经验:设计模式没研究入门,重构使用了一下,好像设计模式开始入门了。对设计模式的不满
书上说:感觉设计模式没用或无从下手,是因为对设计模式不熟悉,没应用。学习设计模式是继承前人经验,我也在努力。模式与重构—创建
用工厂方法替换构造函数。将实例化过程移入工厂类:在工厂方法中引入多态创建:如vo和do的赋值使用单例简化数据访问:如配置文件的读取模式与重构—简化
组合方法:使方法内部的逻辑都在同一层次上。用策略模式替换条件逻辑:?每个处理一个变体装饰功能移动到装饰器类中:代码向类的核心职责提供装饰功能,去除公用重复部分。Java文件处理类?字符处理的加密和过滤功能可以移入装饰器。用命令模式替换条件调度程序:boss中用到组合模式替换树形字符串创建:定义节点对象,避免重复操作模式与重构—泛化
子类中类似方法执行类似步骤:提炼模板方法,上移到超类。在oss中用到。用门面模式兼容新系统和遗留系统。OSS中用到,门面处理boss\运维\代理的数据交互层。门面模式定义:提供一个统一的接口去访问多个子系统的多个不同的接口,它为子系统中的一组接口提供一个统一的高层接口。使用子系统更容易使用。模式与重构—聚集
长字符串的传递用自定义数据对象表示。观察者模式如何实现的?重构工具
Jsp的includeEclipse的工具实际中的重构
重构必须实施才有用。重构方法和设计模式一样,如同游泳指南。不使用就没有任何意义。业务系统维护中,一切的前提是数据分层原则必须遵守,整理各层代码,每层技术和用途不同Jsp/js,配置文件,各类语言文件拆分,发布时的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年国家公务员考试法律基础知识复习题库及答案(共400题)
- 无人驾驶技术的发展与安全性
- 正确认识房颤
- 小班暑假安全教育家乡会
- ofo小黄车创新创业
- 健康教育与促进
- 电子职业导航课件
- 高中主题班会 高一上学期拒绝校园欺凌主题班会课件
- 金属气管套管的护理
- 中级公司信贷-中级银行从业资格考试《公司信贷》模拟试卷1
- 赤峰市松山区德春砖厂粘土矿2024年度矿山地质环境治理计划书
- 交响乐团排练流程
- 《高温熔融金属吊运安全规程》(AQ7011-2018)
- 教师命题能力培训
- 电机与拖动(高职)全套教学课件
- 无人机操控技术(项目式 · 含工作页) PPT 1-1 无人机概述
- 《奇妙的清洁工具》课件
- 《中学物理实验教学技能训练》课程大纲
- 江西申麦新材料科技有限公司年产4万吨有机硅改性产品及配套8300吨特种催化剂和3700吨无机盐一体化项目环境影响报告
- 推广养生仓方案策划
- 汽修实训安全培训课件
评论
0/150
提交评论