• 含义:
    高估未来的扩展性,添加过多不必要的类,方法或继承体系
  • 坏处:
    不利于程序维护,可读性差
  • 目标:
    依现实来重新评估,去除多余的代码部分。
  • 实现方法:
    • 使用Collapse Hierarchy (折叠继承体系)Inline Class (将类合并)
    • 如果函数中某些参数没有用到,考虑使用Remove Parameter (移除参数)
    • 如果函数名称过于抽象,可以使用Rename Method (重命名函数)

本文涉及的重构方法

Collapse Hierarchy (折叠继承体系)

Inline Class (将类合并)

Remove Parameter (移除参数)

  • 作用:
    移除不用的入参。
  • 重构思路:
    把方法中不使用的入参移除。

Rename Method (重命名函数)

  • 作用:
    根据方法实际干的活来重命名此方法
  • 重构思路:
    一般是由于函数名已经不能很好的描述其所做的事。

简单易懂读《重构》 - Speculative Generality (高估未来的可能性)相关推荐

  1. 简单易懂读《重构》 - Feature Envy (依恋情结)

    含义: 某个函数为了实现其功能,经常从另一个类中获取大量数据.比起自身所在的类来说,更加依赖于另一个类 坏处: 代码结构混乱,类分功不明确,可能造成其他坏味道. 目标: 确定类的具体作用,并合理摆置每 ...

  2. 简单易懂读《重构》 - Primitive Obesession (基本类型偏执)

    含义: 以类代替原本单独存在的数值 坏处: 单独存在的数值不易于理解,也不符合面向对象的思想. 目标: 使数值尽量用类代替,就像java中的基本类型那样. 实现方法: 单独存在的数据值,考虑使用Rep ...

  3. 简单易懂读《重构》 - Inappropriate Intimacy(不合适的亲昵关系)

    不合适的亲昵关系 含义: 两个类间互相依赖,总是调用对方的过多属性. 坏处: 代码耦合度高,破坏类的独立性 目标: 把联系过分紧密部分搬移或者建立新类放在其中. 实现方法: 使用Move Method ...

  4. 3.13 speculative generality (夸夸其谈未来性)

    如果所有装置都会被用到,那就值得那么做,如果用不到,就不值得.用不上的装置只会挡你的路,所以,把它搬开. 如果某个抽象类其实没有太大作用,请运用collapse hierarchy,不必要的委托可运用 ...

  5. 代码坏味道 之 13 夸夸其谈未来性 speculative generality

    <重构:改善既有代码的设计>中提到过一些代码的坏味道,针对这些坏味道,需要进行重构. 夸夸其谈未来性 speculative generality 问题1:未来可能要做某事,使用很多特殊情 ...

  6. 代码坏的味道13:夸夸其谈未来性(Speculative Generality)

    如果你的某个抽象类其实没有太大作用,请运用 Collapse Hierarch (折叠继承体系).不必要的委托可运用 Inline Class (将类内联化)除掉.如果函数的某些参数未被用上,可对它实 ...

  7. 公式太多,读不懂? 一文带你领略KNN近邻算法~简单易懂

    ↑ 点击上方[计算机视觉联盟]关注我们 K近邻算法采用测量不同特征值之间的距离方法进行分类. K-近邻算法工作原理: 存在一个样本数据集合,也称作训练样本集,并且样本集中的每个数据都存在标签,即我们知 ...

  8. 代码的坏味道之十三 :Speculative Generality(夸夸其谈未来性)

    这个令我们十分敏感的坏味道,命名者是Brian Foote.当有人说『噢,我想我们总有一天需要做这事』并因而企图以各式各样的挂勾(hooks)和特殊情况来处理一 些非必要的事情,这种坏味道就出现了.那 ...

  9. 【转】区块链是什么,如何简单易懂地介绍区块链?

    作者:知乎用户 链接:https://www.zhihu.com/question/37290469 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 友情提醒:比特币 ...

最新文章

  1. 规范化制度保障安擎高品质产品
  2. MySQL 清理slowlog方法
  3. 802.11ac/ax (wifi6)中的Beamforming技术介绍
  4. d3 svg path添加文本_10 倍高清不花!大麦端选座 SVG 渲染
  5. Qt状态机框架介绍(一)
  6. Linux解决编译Apache出现的问题:configure: error: APR not found
  7. 03、动态代理--CGLib引入增强
  8. python创建文本、判断该文件共有多少行_python如何判断文件有多少行
  9. python的基本语术_一起学python-彻底掌握专业术语“变量”的概念
  10. Objectc 基础类型
  11. ubuntu16.04(其他版本也可)批量修改图片名---shell编程
  12. 同济大学自动化与计算机科学,同济大学本科专业选通信工程好,还是选自动化好呢?...
  13. 软件测试订单测试用例,测试用例 - 进销存软件测试.doc
  14. 基于Go的挑战程序设计竞赛的进化之路①
  15. 为什么用易互动投屏电视没声音?
  16. 相机模型-鱼眼模型/Omnidirectional Camera(1)
  17. Me安装教程(同pr)
  18. [Big Data - Codis, Mycat(cobar)] 企业互联网+转型实战:如何进行PB级别数据的架构变迁...
  19. 小提琴统计图_R语言数据可视化系列(4)箱线图和小提琴图(附详细代码)
  20. 安装google扩展

热门文章

  1. 常见乱码产生原因以及锟斤拷的产生过程
  2. oracle10G 异构方式迁移表空间之二
  3. Codeforces - 272C Dima and Staircase(思维)
  4. Python 批量下载SIGMOD,VLDB的论文 Mac OS
  5. C语言中的类型限定符有哪些?
  6. Attention!当推荐系统遇见注意力机制
  7. 从头开始训练一个 NER 标注器
  8. python南宁培训
  9. DFMA 方法帮助降低血液分析仪成本
  10. 【JAVA】图形用户界面练习