重构--修改代码的学问_第1页
重构--修改代码的学问_第2页
重构--修改代码的学问_第3页
重构--修改代码的学问_第4页
重构--修改代码的学问_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 乐学Team分享系列之 重重 构构 修改代码的学问 Jun.xiong2013.3.14Roadmap什么是重构?重构的意义Smell Code与常见重构方法重构与设计重构的正确时机参考资料什么是重构?三要素: 调整代码的内部结构(What) 不改变代码原有功能与行为(Not What) 提高代码可理解性,降低维护与修改成本(Goal)代码写好后改进它的设计什么是重构?重构的意义好代码是修改出来的“擦干净窗户,你可以看得更远”如果它没有坏,就别动它?(古老格言古老格言) 软件是有机生命体,设计会腐化,代码会膨胀重构之道,防患未然.问题代码是债务Smell Code与重构方法重复代码代码中的变

2、化扩散,不利于扩展代码长度增加修改与阅读难度增加Tips:封装变化,提取方法或类Smell Code与重构方法过大类/过长函数做得太多提供了客户程序不需要的功能理解与复用困难Tips: 单一职责原则:一次只做一件事 提取函数与类Smell Code与重构方法过多注释代码命名不合理逻辑或算法太复杂注释与代码修改同步困难Tips: 注释时机:为什么这样做,不知道做什么提取方法,规范命名Smell Code与重构方法过长参数列表4个以上参数不利于变化扩展*args, *kwargs需要额外的注释Tips: 将参数封装成对象Smell Code与重构方法函数依恋(Feature Envy)函数对某cl

3、ass兴趣大于自己所处的class profile.addComment() activity.addComment()Tips: 将数据与操作这些数据的方法放在一起Smell Code与重构方法过多复杂的算法分支Tips: Replace switch-case with Strategy Smell Code与重构方法不完善的程序类库(Incomplete Library Class)已有包或库功能不能满足需求Tips: 继承-Subclassing 委托-WrappingSmell Code与重构方法Other Tips:If-else卫语句查询与修改分离重构一开始是小步进行的不要对参数

4、赋值 典型重构动作变量,函数,类,模块等重命名提取方法 类的提取与分拆 类的扩展 方法重写原则:高内聚,低藕合,将变化放在一起重构与设计重构与设计关于建模与模型抽象与聚焦模型3要素: 属性,行为,关系Modeling focus is on What, not HowValue object VS. Entity ObjectComposition(组合)与Aggregation(聚合) Delegation(委托)组合,聚合,委托优先于继承(Inheritance)重构与设计Architecture(架构)The Most important partsDesign StructureThe

5、 relationships between those partsRisks in Software DevelopmentForgetting an important requirement Building the wrong thingReducing risk is in the requirements phase重构与设计Whats Common?Whats Variable?If a design isnt flexible, then CHANGE IT!Never settle on bad design重构与设计开发者需要了解设计原则,学习设计模式设计是不断演化并浮现出

6、来的重构不断,原始设计会腐化设计与性能无法兼顾时重设计:良好的程序结构与可扩展性重性能:好的用户访问体验与速度How should we do?重构与设计开发者不能只会写代码做计划,对工作的管理与设定目标学会设计与架构知识理解需求学会降低风险整体的配合与协作重构的正确时机前提:足够的时间,人力,财力支持,并对代码进行回归验证添加新特性时现有代码结构让你不方便进行理解不熟悉代码时重复第二次做类似事情修补错误时评审代码时为了改进设计Kent Beck的两顶帽子添加新特性时不应该优先考虑重构迅速正确实现功能重构时不要添加新功能不该重构的时机项目已近最后期限逻辑复杂,你没有花时间去分析你不理解前任开发者为什么这样编写团队里的新成员,或新接触项目

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论