把某个算法替换成另一个更清晰的算法

public String foundPerson(String[] people) {for(int i=0; i<people.length; i++) {if (people[i].equals("Don")) {return "Don";}if (people[i].equals("John")) {return "John";}if (people[i].equals("Kent")) {return "Kent";}}return "";
}

重构:将函数本体替换为另一个算法

public String foundPerson(String[] people) {List candidates = Arrays.asList(new String[]{"Don", "John", "Kent"});for(int i=0; i<people.length; i++) {if (candidates.contains(people[i])) {return people[i];}}return "";
}

Substitute Algorithm(替换算法)相关推荐

  1. 表达式必须是可修改的左值怎么解决_如何解决代码腐败的味道

    一. Duplicated Code(重复代码) 如果你在一个以上的地点看到相同的程序结构,设法将他们合而为一,程序会变得更好. 同一个类的两个函数含有相同的表达式,采用Extract Method( ...

  2. 【重构】 代码的坏味道总结 Bad Smell (一) (重复代码 | 过长函数 | 过大的类 | 过长参数列 | 发散式变化 | 霰弹式修改)

    膜拜下 Martin Fowler 大神 , 开始学习 圣经 重构-改善既有代码设计 . 代码的坏味道就意味着需要重构, 对代码的坏味道了然于心是重构的比要前提; . 作者 : 万境绝尘 转载请注明出 ...

  3. 重构-改善既有代码的设计:重新组织函数的九种方法(四)

    函数过长或者逻辑太混乱,重新组织和整理函数的代码,使之更合理进行封装. 1. Extract Method 提炼函数 提炼函数:(由复杂的函数提炼出独立的函数或者说大函数分解成由小函数组成) 你有一段 ...

  4. 改善代码设计 —— 优化函数的构成(Composing Methods)

    1. Extract Method (提炼函数) 解释: 如果发现一个函数的代码很长, 很可能的一种情况是这个函数做了很多事情, 找找看函数中有没有注释, 往往注释都是为了解释下面一块代码做的什么事情 ...

  5. 步步为营 .NET 代码重构学习笔记 九

    步步为营 .NET 代码重构学习笔记系列 步步为营 .NET 代码重构学习笔记 一.为何要代码重构 步步为营 .NET 代码重构学习笔记 二.提炼方法(Extract Method) 步步为营 .NE ...

  6. 步步为营 .NET 代码重构学习笔记 十一

    步步为营 .NET 代码重构学习笔记系列 步步为营 .NET 代码重构学习笔记 一.为何要代码重构 步步为营 .NET 代码重构学习笔记 二.提炼方法(Extract Method) 步步为营 .NE ...

  7. 重构-改善既有代码的设计读书笔记

    1.基本重构 1.1 提炼函数(Extract Function) 将意图和实现分开,如果需要花时间浏览一段代码才能弄清它到底在干什么,那么就应该将其提炼到一个函数中,并根据它所做的事为其命名. 1. ...

  8. 代码坏味道之非必要的

    :notebook: 本文已归档到:「blog」 翻译自:https://sourcemaking.com/refactoring/smells/dispensables 非必要的(Dispensab ...

  9. 重构-改善既有代码的设计:编写代码22宗罪(三)

    1 Duplicated  Code重复代码 不同的地方出现相同的程序结构: 如果你在一个以上的地点看到相同的程序结构,那么可以肯定:设法将它们和而为一,程序会变得更好.最常见的"重复代码& ...

最新文章

  1. IDEA 2017 安装后 关联SVN
  2. NTFS 在linux上挂载,parted分区工具用法
  3. opencv学习笔记1:图片读入,显示与保存(有代码)
  4. boost::thread模块实现默认执行器的测试程序
  5. 开发db文件_Swoole高效跟传统的web开发有什么区别?life
  6. 我的Serverless实战——引领云计算的下一个十年
  7. mysql + keepalived高可用
  8. redhat 6.5 yum不能使用之改进
  9. 数据库设计优化经验谈(转载)
  10. CentOS 7下安装GUI图形界面
  11. 代码管理工具之git的学习
  12. Java 线程池实际运用案例
  13. Scratch少儿编程
  14. 宠物商店电子商务系统er图
  15. Flixel横板游戏制作教程(七)—VictoryState(胜利状态)
  16. 题解 UVA1449 【Dominating Patterns】
  17. 基于色彩恒常( color constancy)特性的Frankle-McCann Retinex图像增强。
  18. git 与github配置(老师详细版)
  19. 产品06-流程图与结构图
  20. MySQL数据库,emp,dept等表

热门文章

  1. 开源开放 | 熵简科技 AI Lab 开源金融领域中文预训练语言模型 FinBERT
  2. 技术动态 | ACL 2019 知识图谱的全方位总结
  3. 论文浅尝 | 从 6 篇顶会论文看「知识图谱」领域最新研究进展 | 解读 代码
  4. PersonGraphDataSet近十万的开放人物关系图谱项目
  5. 笔记:猎头如何在一周之内“摸清”一个行业
  6. git push时报错fatal: Could not read from remote repository.
  7. Java -- 异常的捕获及处理 -- 范例 -- throw与throws的应用
  8. Hibernate第十一篇【配置C3P0数据库连接池、线程Session】
  9. 正则判断字符串是否为数字
  10. 通杀IIS7.0畸形解析0day漏洞