- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第10章 简化函数调用
第10章 简化函数调用
Rename method
Add parameter
Remove parameter
Separate query from modifier
如果一个函数中同时包含了查询和修改类内部状态的动作,请将这两个动作分离
Parameterize method
两个或多个函数做着类似的工作,只是有几个值使得行为略有不同,通过参数来处理不同情况从而统一这几个函数,避免代码重复
Replace parameter with explicit method
有一个函数,其完全根据参数的不同而采取不同的行为,并且参数的取值是离散的。这时可以针对该参数的每一个值建立一个不同的函数
Preserve whole object
假如你从某一个对象中取出若干值,将他们作为某一次函数调用时的参数,这时可以考虑传递整个对象
Replace parameter with method
对象调用某个函数,将所得结果作为参数传递给另一个函数,而接受该参数的函数也有能力调用前一个函数。这时可以让参数接受者去掉该参数而直接调用前一个函数,这里体现了参数使用的一个原则:如果可以通过其他途径获取参数值,那么就不应该通过参数获取该值
Introduce parameter object
你常常会看到一组特定的参数总是一起被传递,可能有好几个函数都使用这几个参数,这几个函数可能属于同一个类,也可能属于不同的类,这样一组数据就是一个数据泥团,这时可以用一个类包装这一组数据,再用对象取代它们
Remove setting method
你类中的某个值域应该在对象初创时被赋值,然后就不再改变。这时应该将该值域设为常量,并移除该值域的所有设值函数
Hide method
有一个函数,从来没有被其他的类用到,这时可以将这个函数修改为私有的
Replace constructor with factory method
Encapsulate downcast
某个函数返回的对象,需要由函数的调用者执行向下转型的动作,这时可以将向下转型的动作封装在函数中
Replace error code with exception
Replace exception with test
面对一个调用者可以预先加以检查的条件,你却抛出了一个异常,这时你可以修改调用者让它在使用函数前先做检查并去掉异常
第三章 代码的坏味道
Duplicated code
Long method
Large class
Long parameter list
Divergent change
我们希望软件是容易修改的,一旦要修改,我们希望跳到系统的某一点,只在该处做修改。针对某一外部变化所引起的相应修改,都应只发生在一个类中。如果一个类有多种变化的原因,那么应该将其分解为多个类。
Shotgun surgery
Divergent change 是一个类受多种变化的影响,而Shotgun surgery则是一个变化引起多个类的修改,这两种情况下你都应该整理代码,取得外界变化与待改类的一一对应关系
Feature envy
面向对象的全部要点在于:这是一种将数据和加诸于其上的操作包装在一起的技术。有一种经典的气味是:函数对某个class的兴趣高过对自己所处之host class的兴趣。这种倾慕之情的焦点便是数据。无数次经验里,我们看到某个函数为了计算某值,几乎从另一个对象那里调用了半打的取值函数。疗法显而易见:将这个函数移至另一地点
Data clumps
数据项(data item)就像小孩子,喜欢成群结队的在一起。这些总是绑在一起出现的数据,应该将它们放在属于它们自己的对象中
Primitive obsession
有时候应该引进一些和基本型别无异的小对象,比如电话号码、邮政编码、数组等,可用小对象包装它们
Switch statements
可用多态包装
Lazy class
将没用的class去掉
Temporary field
有时你会看到这样的对象:其内某个变量仅为某种特定情形而设。这样的代码不易让人理解,因为你通常认为对象在所有时候都需要它的所有变量。这时可以将这个变量和所有与它有关的代码都放进一个新类中
Message chains
消息链过长
Middle man
过度运用委托不如直接和责任对象打交道
Inappropriate intimacy
有时候你会看到两个类过于亲密,花太多时间去探究彼此的私有成分,如果这发生在两个人身上,我们不必做卫道士,但对于两个类,我们希望它们严守清规
Incomplete library class
Comments
过多的注释:当你感觉需要写注释,请先使用重构,让这些注释变得多余
第六章 重新组织你的函数
1. Extract me
您可能关注的文档
最近下载
- 《懂得爱:在亲密关系中成长》读书笔记.docx VIP
- 上海市中考语文专题复习:文言文虚词简表.pdf VIP
- 广西盐业公司的招聘试卷.pdf VIP
- 2025《民营经济促进法》解读课件PPT.pptx
- Haier海尔空调KFRd-120LW 7YAF81 KFRd-120LW 5YAF82 KFR-12ity 5YAF82用户手册.pdf
- 雪铁龙维修 手册 图DS_5LS_Owner_Book_ZH.pdf VIP
- 烟风煤支吊架设计手册-新版.pdf VIP
- 长期卧床鼻饲患者的护理ppt.pptx VIP
- 教学能力大赛教案--智慧工厂的安全策略之VLAN的划分.docx VIP
- GB 6246-2011 消防水带标准规范‘’.pdf
文档评论(0)