“ 当你看着一个类说,呃,如果新加入一个数据库,我必须修改这三个函数:如果新出现一种金融工具,我必须修改这四个函数.那么,此时也许将这个类分成两个会更好,这么一来每个对象就可以只因一种变化而需要修改. ” 上述特征的名称叫做:Divergent Change.它表示,某个类经常因为不同的原因在不同的方向上发生变化.比如,上述的类,有两个原因,会导致这个类在两个不同的方向上发生变化.   我们认为,一个类,只会因为一种原因而导致变化,这才是好的.如果,这个类,会因为多种原因发生变化,那么,我们就要…
5.Divergent Change发散式变化 描述:一个类被锚定了多个变化,当这些变化中的任意一个发生时,就必须对类进行修改. 解释:一个类最好只因一种变化而被修改 操作:你应该找出某特定原因而造成的所有变化,然后运用Extract Class将它们提炼到另一个类中. 6.Shotgun Surgery散弹式修改 描述:一种变化引发程序多处的修改. 解释:一种变化在程序中有多个锚点,并且分散在程序各处.(就像散弹一样) 需要修改的代码散布四处,你不但很难找到它们,也很容易忘记某个重要的修改.…
坏味道--发散式变化(Divergent Change) 发散式变化(Divergent Change) 类似于 霰弹式修改(Shotgun Surgery) ,但实际上完全不同.发散式变化(Divergent Change) 是指一个类受多种变化的影响.霰弹式修改(Shotgun Surgery) 是指多种变化引发多个类相应的修改. 特征 你发现你想要修改一个函数,却必须要同时修改许多不相关的函数.例如,当你想要添加一个新的产品类型时,你需要同步修改对产品进行查找.显示.排序的函数. 问题原因…
膜拜下 Martin Fowler 大神 , 开始学习 圣经 重构-改善既有代码设计 . 代码的坏味道就意味着需要重构, 对代码的坏味道了然于心是重构的比要前提; . 作者 : 万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/20009689 . 1. 重复代码 (Duplicated Code) 用到的重构方法简介 : Extract Method(提炼函数), Pull Up Method(函数上移), From…
膜拜下 Martin Fowler 大神 , 开始学习 圣经 重构-改善既有代码设计 . 代码的坏味道就意味着需要重构, 对代码的坏味道了然于心是重构的比要前提; . 作者 : 万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/20009689 . 1. 重复代码 (Duplicated Code) 用到的重构方法简介 : Extract Method(提炼函数), Pull Up Method(函数上移), From…
Vue有一个很方便的特性就是Vue的双向绑定,即响应式变化,在Vue2.X版本中,Vue响应式变化靠的是Object.defineProperty方法实现的,但是这个方法有个问题,就是对数组的支持不全面,如我们想要通过arr[0] = 11这种下标修改值的方式,Vue是不会监听并重新渲染组件的,以及arr.length = 0这种方式清空数组,也是不支持的. 那么在Vue中,是如何实现数据的双向绑定的呢?我们可以简单模拟一下. 实现原理就是:给数据绑定get/set方法,当修改对应的属性值时,会…
今天分享前端代码主题:jequery控制css图片透明度 很多时候在网站图片处理上需要实现一些辅助效果,比如鼠标在图片上滑动时或点击时改变图片颜色(变灰或者其他),其实一个简单的办法就是改变图片css透明度属性. 如何改变呢?一种是纯css,一种使用jquery或者javascript代码控制.第一种使用:hover伪类选择器,本示例使用第二种. 先看最后效果: 第一步:放置图片 <ul id="test">        <li>            <…
在ElementUI的Dialog中,需要实现其宽度随浏览器宽度变化而变化,并设定默认值,当浏览器宽度大于该值时,Dialog保持该宽度,小于该值时,使用100%宽度. 代码使用 window.onresize 事件触发变化,具体Demo代码如下 <template> <div class="app-container"> <div class="filter-container"> <el-button type=&quo…
如果想利用单个类做太多事情,其内往往就会出现太多实例变量.一旦如此,Duplicated Code也就接踵而至.     解决方法:     1.将类内彼此相关的变量,将它们放在一起.使用Extract Class手法,将彼此相关的变量提炼到新的类.     2.如果1中的新类适合作为一个子类,那么可以使用Extract Subclass手法.   11.对于太多代码的处理办法,分解函数,将大函数分解成若干小函数,这样可以消除重复代码.相关的函数,可以跟着变量,一起被提炼到一个新的类中去,使用E…
什么时候需要重构,当你在项目代码里面嗅到这个味道的时候,就要进行重构.   首个介绍的味道是重复代码的味道.   它表现出来的特征是这些:   1.一个类里面,两个函数中,含有相同的代码,类似的代码:或者三个函数中,含有相同的代码,类似的代码.这是重复代码的味道.   2.两个互为兄弟的子类内含有相同的表达式.这也是重复代码的味道.   3.两个不相关的类,出现了重复代码.这也是重复代码的味道.     如何处理,如何重构   1.对于两个函数,出现重复代码,使用Extract Method方法…