- 1、本文档共43页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
重构方法(1) - 提取方法描述:当你的代码中有一些片段在逻辑上能够归为一组,那么通常可以将这一组代码提取出来形成一个方法,并用方法名来解释方法的目的。动机:提高了其他方法重用这段代码的可能性。使得‘高层’的方法可读性更好。当有需要的时候,重载更加方便。步骤:创建一个新方法,以方法的目的为该方法命名(而不是以方法的具体行为为该方法命名)。把要提取的方法从原来的方法中拷贝到新方法中。检查提取的代码,看看其中是否有对原来方法中的局部变量的引用(通常IDE会帮我们做,会用编译错误来提示找不到变量)。如果有,将该变量作为方法的参数。检查在原方法中是否有只在提取的代码中使用的临时变量,如果有,将该变量移入提取的方法中。看看在第三步中的局部变量在方法中是否被改变了。如果只有一个局部变量被改变,那么我们可以将该变量作为方法的返回值返回。如果有多于一个的变量被改变,那么我们可能需要先进行分离临时变量(另外一种重构方法,以后介绍)重构,再进行提取方法的重构。我们以可以使用使用查询方法代替临时变量(另外一种重构方法,以后介绍)来减少临时变量的个数。编译代码,看看是否有错误。用提取的方法替换原来方法中被提取的代码。注意在原方法中删除第四步中我们移入的临时变量。编译,运行单元测试。例子:1.?没有局部变量的情况void printOwing(){?Enumeration e = _orders.elements();?double outstanding = 0.0;?//打印提示信息?System.out.println(“************************”);?System.out.println(“***** CustomerOwes *****”);?System.out.println(“************************”);?//计算应付金额?while (e.hasMoreElements()) { Order each = (Order) e.nextElement(); outstanding??+= each.getAmount();?}?//打印详细信息?System.out.println(“name:” +_name);?System.out.println(“amount:” +outstanding);}复制代码在这里,我们可以很容易的将打印提示信息的部分代码提取成单独的方法。void printOwing(){?Enumeration e = _orders.elements();?double outstanding = 0.0;?printBanner();?//计算应付金额?while (e.hasMoreElements()) { Order each = (Order) e.nextElement(); outstanding??+= each.getAmount();?}?//打印详细信息?System.out.println(“name:” +_name);?System.out.println(“amount:” +outstanding);}void printBanner(){?System.out.println(“************************”);?System.out.println(“*****Customer Owes *****”);?System.out.println(“************************”);}复制代码2.?提取代码中读取局部变量的情况还是使用上面的代码,我们来提取打印详细信息的方法。void printOwing(){?Enumeration e = _orders.elements();?double outstanding = 0.0;?printBanner();?//计算应付金额?while (e.hasMoreElements()) { Order each = (Order) e.nextElement(); outstanding??+= each.getAmount();?}?printDetail(outstanding);}voidprintBanner(){?System.out.println(“************************”);?System.out.println(“*****Customer Owes *****”);?System.out.println(“************************”);}voidprintDetail(double outstanding){?System.out.println(“name:” +_nam
您可能关注的文档
- unit11sectionB1页快乐人衬衫.ppt
- 避开缩减成本四大障碍.doc
- Unit1单元基本知识复习小测.ppt
- 邢台燕窝真假区别.doc
- 那一次-我真的很高兴 .doc
- 那么如何依据市场机会和本企业内部竞争能力来为企业进一步发展做出周细稳妥战略策划呢.doc
- 那些平台可以发链外更好.docx
- Unit2-Icandoit职高英语基础模块课件.ppt
- 那些我们值得一读SEO精华知识.doc
- 那些渗透在平凡数字里踏实2011述职报告.doc
- 2025年安徽省宿州市单招职业倾向性测试题库及参考答案1套.docx
- “沿海优品购” 沿海地区电商平台商业计划书.docx
- 挖机检测报告 模板.docx
- 2025年安徽审计职业学院单招职业技能测试题库附答案(完整版).docx
- 铅笔盒项目可行性研究报告评审方案设计(2025年发改委标准案例范文).docx
- 2025年安徽现代信息工程职业学院单招职业技能测试题库精选答案.docx
- 2025年安徽广播影视职业技术学院单招职业适应性测试题库(综合题).docx
- 危重孕产妇救治体系评估自查报告.docx
- 2025年安徽省巢湖市单招职业适应性测试题库精编答案.docx
- 2025年廊坊职业技术学院单招职业技能测试题库完整版.docx
文档评论(0)