- 1、本文档共13页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
重构(zhang)
重构(Refacting)
什么是重构?代码写好之后,对它进行重新设计,但并不改变原有代
的逻辑(可以包括对方法名,变量名,常量的抽取和优化)
2、 进行重构的时候,我们需要依赖测试,让它告诉我们是否引入了臭虫。好的测试是重构的根本。?3、 重构的节奏:测试、小修改、测试、小修改、……?4、 “两顶帽子”:使用重构技术开发软件时,你把自己的时间分配给两种截然不同的行为:“添加新功能”和“重构”。添加新功能时,你不以你更改修改既有代码, 只管添加新功能。通过测试,你可以衡量自己的工作进度。重构时你就不能再添加功能,只管改进程序结构。此时你不应该添加任何测试(除非发现先前遗漏的任何 东西),只在绝对必要时(用以处理接口变化)才修改测试。?5、 何时重构?三次法则,第一次做某件事时只管去做;第二次做类似的事会产生反感,但无论如何还是做了;第三次再做类似的事,你就应该重构。?1) 添加功能时一并重构;2)修补错误时一并重构;3)复审代码时一并重构。?6、 重构的难题:数据库;修改接口;难以通过重构手法完成的设计改动。?7、 何时不该重构?重写而非重构的一个清楚讯号就是:现有代码根本不能正常工作。如果项目已近最后期限,你也应该避免重构。?-------------------------------------------------------------------------------?8、 “臭味条款”—Kent Beck?1) Duplicated Code(重复代码)?2) Long Method(过长函数)?3) Large Class(过大类)?4) Long Parameter List(过长参数列)?5) Divergent Change(发散式变化)——过耦合?6) Shotgun Surgery(散弹式修改)——过度的分散与过耦合相反?7) Feature Envy(依恋情节)——函数对某个class的兴趣高过对自己所处的host class的兴趣。症状:某个函数为了计算某值,从另一个对象那调用机会半打的取值函数。疗法:把这个函数移动到另一个地点。?8) Data Clumps(数据泥团)——症状:总是绑在一起出现的数据,很多地方可以看到相同的三或四笔数据项:两个classes内的相同值域、许多函数签名式中的相同参数。疗法:把这些数据放进属于它们自己的对象中。?9) Primitive Obsession(基本型别偏执)——两种数据:结构型别和基本型别。充分利用“对象”的价值,它模糊了横亘于基本数据和体积较大的classes之间界限。例如以class表示字符串和日期。?10) Switch Statements(switch惊悚现身)——面向对象程序的一个最明显特征就是:少用switch语句。多态的概念可以为此带来优雅的解决办法。?11) Parallel Inheritance Hierarchies(平行继承体系)——每当为某个class增加一个subclass,必须也为另一个class相应增加一个subclass。?12) Lazy Class(冗赘类)——如果一个class的所得不值其身价,他就应该消失。?13) Speculative Generality(夸夸其谈未来性)——以为“总有一天需要做这事”并因而企图以各式各样的挂钩和特殊情况来处理一些非必要的事情。?14) Temporary Field(令人迷惑的暂时值域)——对象内某个instance变量仅为某种特定情势而设。?15) Message Chains(过度耦合的消息链)——用户向一个对象所求另一个对象,然后再向后者所求另一个对象,然后……这就是消息链。?16) Middle Man(中间转手人)——某个class接口有一般的函数都委托给其他class,这样就是过度运用。?17) Inappropriate Intimacy(狎昵关系)——两个类之间过分亲密?18) Alternative Classes with Different Interfaces(异曲同工的类)——两个函数做同样的事情,却有着不同的签名式。?19) Incomplete Library Class(不完美的程序库类)?20) Data Class(纯稚的数据类)——只含有一些值域以及访问值域的方法?21) Refused Bequest(被拒绝的遗赠)——子类应该集成弗雷的函数和数据。但如果他们不想或不需要继承。?22) Comments(过多的注释)?23) 如何学习?1)随时挑一个目标;2)没有把握就停下来:你无法证明自己所做的
您可能关注的文档
- 陈城中心2012~2013学年第一学期学校工作意见.doc
- 光纤通信考查报告.doc
- 运动估计算法实现.doc
- 系统的重构.doc
- 计算机算法实验报告.doc
- 嵌入式虚拟仪器模拟通道的远程重构技术.doc
- 中国传媒产业规制的解构与重构.doc
- 动态能力(环境洞察能力、学习吸收能力、变革更新能力、快速反应能力和整合重构能力)测量量表.doc
- 02突围——时下课堂教学的检视与重构(2012.7.22).doc
- JPEG2000图像压缩算法标准.doc
- 初中历史教育中人工智能与史料解读的跨学科教学实践教学研究课题报告.docx
- 《餐饮服务创新在提升顾客体验与口碑传播中的作用机理分析》教学研究课题报告.docx
- 2025年中国升降式电子调温万用电炉市场调查研究报告.docx
- 《生态缓冲带技术在农业面源污染治理中的生态水文过程与土壤养分循环关系研究》教学研究课题报告.docx
- 《STEM教育视角下小学科学课程中的问题解决策略研究》教学研究课题报告.docx
- 跨境电商办公用品电商仓储物流仓储设备选型研究报告.docx
- 2025年私募股权投资基金行业投资热点与跨境退出策略研究报告.docx
- 《体验经济下旅游景区服务质量提升的顾客体验价值链分析》教学研究课题报告.docx
- 生成式AI在初中地理教学中的共同体构建与应用教学研究课题报告.docx
- 2025年中国半自动凝血分析仪市场调查研究报告.docx
文档评论(0)