- 1、本文档共32页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
脱节的API 症状: 为了灵活性而建立的细致、脱节的API,外加很多配置选项 措施: 同样的配置选项不断被重复使用时,引入网关用简化的方式和API交互 引入表达式构造器可同时作用于内部和外部API 不断重复的样板文件 症状: 重复的样板文件 措施: 提炼方法 太普遍的方法,引入类标注 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 重构之代码的坏味道 重复代码 症状: 重复的表达式 不同算法做相同的事 类似代码 措施: 一个类中包含两段重复代码时,使用提炼方法置于一处 两个相同层次的类含有重复代码时,提炼方法,方法上移 两个无关类中出现重复代码时,提炼方法至其中一个类或其他类中供调用 例:方法上移 class Customer{??? private Date lastBillDate;??? addBill(Date dat,double amount){}} class RegularCustomer:Customer{??? createBill(Date){}??? chargeFor(Date start,Date end){}} class PreferredCustomer:Customer{??? createBill(Date){}??? chargeFor(Date start,Date end){}} class Customer{??? private Date lastBillDate;??? addBill(Date dat,double amount){}??? createBill(Date){}??? abstract double chargeFor(Date start,Date end){}} class RegularCustomer:Customer{??? chargeFor(Date start,Date end){}} class PreferredCustomer:Customer{??? chargeFor(Date start,Date end){}} * 方法过长 症状: 存在大量的代码行 注释 条件和循环 措施: 每当需要注释时,写一个方法来代替注释 绝大多数场合下,采取提炼方法技术来缩短函数 方法带有很多参数和临时变量时,采取查询替换临时变量和链式调用替换临时变量来消除临时变量;采用引入参数对象和保留完整对象技术瘦身参数列表;重型武器:使用方法对象替换方法 使用分解条件语句处理条件表达式;使用集合闭包方法替换循环 例:查询替换临时变量 //这是未做重构的简单方法double getPrice(){??? int basePrice=_quantity*_itemPrice;??? double discountFactor;??? if(basePrice1000)??????? discountFactor=0.95;??? else??????? discountFactor=0.98;??? return basePrice*discountFactor;} //重构之后的主方法double getPrice(){??? return basePrice()*discountFactor();} //把临时变量赋值语句等号右边的表达式提炼成一个方法private int basePrice(){??? return _quantity*_itemPrice;} //有了basePrice()的基础很容易提炼出下面的方法private double discountFactor(){??? if(basePrice()1000)??????? return 0.95;??? else??????? return 0.98;} * 例:引入参数对象 class Entry...{??? Entry(double value,Date chargeDate)??? {????????_value=value;????????_chargeDate=chargeDate;??? }??? Date getDate()??? {????????return _chargeDate;??? }??? double getValue()??? {????????return _value;??? }??? private Date _chargeDate;??? private double _value;} class Account...{??? double
您可能关注的文档
- ch09-集合框架-01.ppt
- 10.1.1统计调查1.ppt
- 10.1统计调查.ppt
- 10.2画轴对称图形讲.ppt
- 小数的初步认识xin.ppt
- 10.3.2旋转的特征【野渡横舟精编】.ppt
- 10.常见的化学合成材料.ppt
- 北师大四上相交与垂直.ppt
- 10.拼音输入法.ppt
- 11.2社会历史的主体课件(人教版必修4).ppt
- 【高考地理】北京市海淀区2022届高三一模考试(试题+答案).pdf
- 【高考数学】北京市东城区2021届高三一模考试(试题+答案+解析).pdf
- 【高考语文】北京市东城区2021届高三一模考试(试题+答案+解析).pdf
- 【高考地理】北京市朝阳区2021届高三一模考试(试题+答案+解析).pdf
- 【高考物理】北京市延庆区2020届高三一模考试(试题+答案).pdf
- 【高考语文】北京市丰台区2021届高三一模考试(试题+答案+解析).pdf
- 【高考语文】北京市海淀区2021届高三一模考试(试题+答案+解析).pdf
- 【高考英语】北京市门头沟区2021届高三一模考试(试题+答案+解析).pdf
- 【高考政治】北京市海淀区2022届高三一模考试(试题+答案).pdf
- 【高考英语】北京市朝阳区2022届高三一模考试(试题+答案).pdf
文档评论(0)