简单易懂读《重构》 - Speculative Generality (高估未来的可能性)
- 含义:
高估未来的扩展性,添加过多不必要的类,方法或继承体系 - 坏处:
不利于程序维护,可读性差 - 目标:
依现实来重新评估,去除多余的代码部分。 - 实现方法:
- 使用Collapse Hierarchy (折叠继承体系) 和 Inline Class (将类合并) 。
- 如果函数中某些参数没有用到,考虑使用Remove Parameter (移除参数)
- 如果函数名称过于抽象,可以使用Rename Method (重命名函数)
本文涉及的重构方法
Collapse Hierarchy (折叠继承体系)
Inline Class (将类合并)
Remove Parameter (移除参数)
- 作用:
移除不用的入参。 - 重构思路:
把方法中不使用的入参移除。
Rename Method (重命名函数)
- 作用:
根据方法实际干的活来重命名此方法 - 重构思路:
一般是由于函数名已经不能很好的描述其所做的事。
简单易懂读《重构》 - Speculative Generality (高估未来的可能性)相关推荐
- 简单易懂读《重构》 - Feature Envy (依恋情结)
含义: 某个函数为了实现其功能,经常从另一个类中获取大量数据.比起自身所在的类来说,更加依赖于另一个类 坏处: 代码结构混乱,类分功不明确,可能造成其他坏味道. 目标: 确定类的具体作用,并合理摆置每 ...
- 简单易懂读《重构》 - Primitive Obesession (基本类型偏执)
含义: 以类代替原本单独存在的数值 坏处: 单独存在的数值不易于理解,也不符合面向对象的思想. 目标: 使数值尽量用类代替,就像java中的基本类型那样. 实现方法: 单独存在的数据值,考虑使用Rep ...
- 简单易懂读《重构》 - Inappropriate Intimacy(不合适的亲昵关系)
不合适的亲昵关系 含义: 两个类间互相依赖,总是调用对方的过多属性. 坏处: 代码耦合度高,破坏类的独立性 目标: 把联系过分紧密部分搬移或者建立新类放在其中. 实现方法: 使用Move Method ...
- 3.13 speculative generality (夸夸其谈未来性)
如果所有装置都会被用到,那就值得那么做,如果用不到,就不值得.用不上的装置只会挡你的路,所以,把它搬开. 如果某个抽象类其实没有太大作用,请运用collapse hierarchy,不必要的委托可运用 ...
- 代码坏味道 之 13 夸夸其谈未来性 speculative generality
<重构:改善既有代码的设计>中提到过一些代码的坏味道,针对这些坏味道,需要进行重构. 夸夸其谈未来性 speculative generality 问题1:未来可能要做某事,使用很多特殊情 ...
- 代码坏的味道13:夸夸其谈未来性(Speculative Generality)
如果你的某个抽象类其实没有太大作用,请运用 Collapse Hierarch (折叠继承体系).不必要的委托可运用 Inline Class (将类内联化)除掉.如果函数的某些参数未被用上,可对它实 ...
- 公式太多,读不懂? 一文带你领略KNN近邻算法~简单易懂
↑ 点击上方[计算机视觉联盟]关注我们 K近邻算法采用测量不同特征值之间的距离方法进行分类. K-近邻算法工作原理: 存在一个样本数据集合,也称作训练样本集,并且样本集中的每个数据都存在标签,即我们知 ...
- 代码的坏味道之十三 :Speculative Generality(夸夸其谈未来性)
这个令我们十分敏感的坏味道,命名者是Brian Foote.当有人说『噢,我想我们总有一天需要做这事』并因而企图以各式各样的挂勾(hooks)和特殊情况来处理一 些非必要的事情,这种坏味道就出现了.那 ...
- 【转】区块链是什么,如何简单易懂地介绍区块链?
作者:知乎用户 链接:https://www.zhihu.com/question/37290469 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 友情提醒:比特币 ...
最新文章
- 规范化制度保障安擎高品质产品
- MySQL 清理slowlog方法
- 802.11ac/ax (wifi6)中的Beamforming技术介绍
- d3 svg path添加文本_10 倍高清不花!大麦端选座 SVG 渲染
- Qt状态机框架介绍(一)
- Linux解决编译Apache出现的问题:configure: error: APR not found
- 03、动态代理--CGLib引入增强
- python创建文本、判断该文件共有多少行_python如何判断文件有多少行
- python的基本语术_一起学python-彻底掌握专业术语“变量”的概念
- Objectc 基础类型
- ubuntu16.04(其他版本也可)批量修改图片名---shell编程
- 同济大学自动化与计算机科学,同济大学本科专业选通信工程好,还是选自动化好呢?...
- 软件测试订单测试用例,测试用例 - 进销存软件测试.doc
- 基于Go的挑战程序设计竞赛的进化之路①
- 为什么用易互动投屏电视没声音?
- 相机模型-鱼眼模型/Omnidirectional Camera(1)
- Me安装教程(同pr)
- [Big Data - Codis, Mycat(cobar)] 企业互联网+转型实战:如何进行PB级别数据的架构变迁...
- 小提琴统计图_R语言数据可视化系列(4)箱线图和小提琴图(附详细代码)
- 安装google扩展