改善既有的代码-重构(ppt).ppt_第1页
改善既有的代码-重构(ppt).ppt_第2页
改善既有的代码-重构(ppt).ppt_第3页
改善既有的代码-重构(ppt).ppt_第4页
改善既有的代码-重构(ppt).ppt_第5页
免费预览已结束,剩余37页可下载查看

下载本文档

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

文档简介

重构技术,邱百超badqiu(a),讲解内容,重构介绍重构原则代码的坏味道重构技巧重构工具使用实例Qif(name!=nullif(age!=nullif(!isNullOrEmpty(name).Stringage=request.getParameter(Age);if(!isNullOrEmpty(age).privatebooleanisNullOrEmpty(finalStringstring)if(string!=null,ExtractMethods(提炼函数:清除注释),voidprintOwing()/printbannerSystem.out.println(“*”);System.out.println(“Banner”);System.out.println(“*”);/printdetailsSystem.out.println(name:+_name);System.out.println(amount+getOutstanding();,voidprintOwing()printBanner();printDetails(getOutstanding();voidprintBanner()System.out.println(“*”);System.out.println(“Banner”);System.out.println(“*”);voidprintDetails(doubleoutstanding)System.out.println(name:+_name);System.out.println(amount+outstanding);,InlineMethod(将函数内联化),InlineTemp(将临时变量内联化),ReplaceTempwithQuery(以查询取代临时变量),doublebasePrice=_quantity*_itemPrice;if(basePrice1000)returnbasePrice*0.95;elsereturnbasePrice*0.98;,if(basePrice()1000)returnbasePrice()*0.95;elsereturnbasePrice()*0.98;.doublebasePrice()return_quantity*_itemPrice;,IntroduceExplainingVariable(引入解释性变量),booleanisMacOs=platform.toUpperCase().indexOf(MAC)-1;booleanisIEBrowser=browser.toUpperCase().indexOf(IE)-1;booleanwasResized=resize0;if(isMacOsSystem.out.println(temp);temp=_height*_width;System.out.println(temp);,doubleperimeter=2*(_height+_width);System.out.println(perimeter);doublearea=_height*_width;System.out.println(area);,RemoveAssignmentstoParameters(移除对参数的赋值),ReplaceMethodwithMethodObject(以函数对象取代函数),SubstituteAlgorithm(替换算法),ReplaceNestedConditionalwithGuardClauses,doublegetPayAmount()doubleresult;if(_isDead)result=deadAmount();elseif(_isSeparated)result=separatedAmount();elseif(_isRetired)result=retiredAmount();elseresult=normalPayAmount();returnresult;,doublegetPayAmount()if(_isDead)returndeadAmount();if(_isSeparated)returnseparatedAmount();if(_isRetired)returnretiredAmount();returnnormalPayAmount();,SplitLoop-1,voidprintValues()doubleaverageAge=0;doubletotalSalary=0;for(inti=0;ipeople.length;i+)averageAge+=peoplei.age;totalSalary+=peoplei.salary;averageAge=averageAge/people.length;System.out.println(averageAge);System.out.println(totalSalary);,voidprintValues()doubletotalSalary=0;for(inti=0;ipeople.length;i+)totalSalary+=peoplei.salary;doubleaverageAge=0;for(inti=0;ipeople.length;i+)averageAge+=peoplei.age;averageAge=averageAge/people.length;System.out.println(averageAge);System.out.println(totalSalary);,SplitLoop-2,voidprintValues()System.out.println(averageAge();System.out.println(totalSalary();privatedoubleaverageAge()doubleresult=0;for(inti=0;ipeople.length;i+)result+=peoplei.age;returnresult/people.length;privatedoubletotalSalary()doubleresult=0;for(inti=0;ipeople.length;i+)result+=peoplei.salary;returnresult;,简化条件表达式,分解表达式,if(date.before(SUMMER_START)|date.after(SUMMER_END)charge=quantity*_winterRate+_winterServiceCharge;elsecharge=quantity*_summerRate,if(notSummer(date)charge=winterCharge(quantity);elsecharge=summerCharge(quantity);,RemoveDoubleNegative,if(!item.isNotFound()if(item.isFound(),在对象之间搬移特性,搬移函数(MoveMethod)搬移值域(MoveField)提炼类(ExtractClass)将类内联化(InlineClass)隐藏委托关系(HideDelegat

温馨提示

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

评论

0/150

提交评论