- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
面向对象与构件技术(ch02Object-OrientedDesign)
By Yu lasheng Object- Oriented Design Object- Oriented Design l Domain analysis done ... what is the best way to code it? l Incremental iterative w/ refactoring l Reduce complexity l OO support: polymorphism, encapsulation, delegation, generalization l Study Design Patterns - review GRASP patterns (from section II) l Study more patterns - Pattern Oriented Software Architecture l Experience helps l Pay attention to the design process l Useful concepts: Architecture / Framework / Component / Interface / Reusable infrastructure l More art than science Object- Oriented Design 重构(名词):对软件内部结构的一种调整,目的是在不改变「软件之可察行为」前提下,提高其可理解性,降低其修改成本。 重构(动词):使用一系列重构准则(手法),在不改变「软件之可察行为」前提下,调整其结构。 特点 首先,重构的目的是使软件更容易被理解和修改。 重构不会改变软件「可受观察之行为」- 重构之后软件功能一如以往。任何用户,不论最终用户或程序员,都不知道已有东西发生了变化。 Kent Beck的「两顶帽子」比喻 使用重构技术开发软件时,你把自己的时间分配给两种截然不同的行为:「添加新功能」和「重构」。添加新功能时,你不应该修改既有代码,只管添加新功能。通过测试(并让测试正常运行),你可以衡量自己的工作进度。重构时你就不能再添加功能,只管改进程序结构。此时你不应该添加任何测试(除非发现先前遗漏的任何东西),只在绝对必要(用以处理接口变化)时才修改测试。 软件开发过程中,你可能会发现自己经常变换帽子,但无论何时你都应该清楚自己戴的是哪一顶帽子。 何时重构 添加功能时一并重构 重构的第一个原因往往是为了帮助我理解需要修改的代码。 修补错误时一并重构 调试过程中运用重构,多半是为了让代码更具可读性。 复审代码时一并重构 Why 重构 四个原因,它们是:1 难以阅读的程序,难以修改。2 逻辑重复(duplicated logic)的程序,难以修改。3 添加新行为时需修改既有代码者,难以修改。4 带复杂条件逻辑(complex conditional logic)的程序,难以修改。因此,我们希望程序 (1) 容易阅读,(2) 所有逻辑都只在惟一地点指定,(3) 新的改动不会危及现有行为,(4) 尽可能简单表达条件逻辑(conditional logic)。 代码的坏味道 Duplicated Code(重复的代码) Long Method(过长函数) Large Class(过大类) Long Parameter List(过长参数列) Divergent Change(发散式变化) Shotgun Surgery(霰弹式修改) Feature Envy(依恋情结) Data Clumps(数据泥团) Primitive Obsession(基本型别偏执) Switch Statements(switch惊悚现身) Parallel Inheritance Hierarchies(平行继承体系) 代码的坏味道 Lazy Class(冗赘类) Speculative Generality(夸夸其谈未来性) Temporary Field(令人迷惑的暂时值域) Message Chains(过度耦合的消息链) Middle Man(中间转手人) :过度运用 delegation Inappropriate Intimacy(狎昵关系) :过份狎昵的classes必须拆散 Alternative Classes with Different Interfaces(异曲同功的类) Incomplete Library Class(不完美的程序库类) Data Class(纯稚的数据类) Refused Bequest(被拒绝的遗赠) Comments(过多的注释) When? W
原创力文档


文档评论(0)