汽配网站源码,做调查赚钱的网站,重庆seo网站建设优化,网站推广方法素材其实看了重构之后#xff0c;发现重构和设计模式有很多很多相通的地方#xff0c;或者有着同样的目的。你完全可以参考设计模式的原则来修改已有的代码。 1.单一职责原则 2.开放--封闭原则 3.依赖倒装原则 4.迪米特原则#xff08;类松耦合#xff09; 笔者也在《重构》这本…其实看了重构之后发现重构和设计模式有很多很多相通的地方或者有着同样的目的。你完全可以参考设计模式的原则来修改已有的代码。 1.单一职责原则 2.开放--封闭原则 3.依赖倒装原则 4.迪米特原则类松耦合 笔者也在《重构》这本书中大量的谈到各种设计模式所以再次推荐大家去看看 设计模式 其实很多时候我们不复审自己的代码的话是很难发现自己编写代码的不足的。而且就算是复审了也很难发现问题反正能实现功能就行了。 所以重构这本就是总结那些大牛们总结出的经验结晶能教我们怎么发现这些不是bug的问题并解决它们。 什么是重构 这是定义 重构名词对软件内部结构的一种调整目的是在不改变软件可观察行为的前提下提高其可理解性降低其修改成本。 重构动词使用一系列重构手法在不改变软件可观察行为的前提下调整其结构。 说人话就是已有代码太糙了又臭又长既不方便修改也不方便复用...不符合各种设计原则需要进行修改加工整容。 为什么需要重构 因为可以升职加薪赢取白富美呀。 什么时候重构 1.难以阅读的程序难以修改 2.逻辑重复的程序难以修改 3.添加新行为时需要修改已有代码的程序难以修改 4.带复杂条件逻辑的程序难以修改 因此我们希望程序 1.阅读容易 2.所有逻辑都只在唯一地点指定 3.新的改动不会危及现有行为 4.尽可能简单表达条件逻辑 代码的坏味道 当你闻到这些味道的时候可能你的代码需要重构了。所以以下这些味道很重要。 1.重复代码Duplicate Code 如果你在一个以上的地方看到相同的程序结构那么可以肯定设法将它们合而为一程序会变得更好。 2.过长函数Long Method 你应该积极分解函数。我们遵循这样一条原则每当感觉需要以注释来说点什么的时候我们就把需要说明的东西写进一个独立的函数中并以其用途命名。 3.过大的类Large Class 如果想利用单个类做过多的事情其内往往就会太多实例变量。 4.过长参数列Long Parameter List 如果参数列太长或者变化太频繁你就需要重新考虑自己的依赖结构了。 5.发散式变化Divergent Change 如果某个类经常因为不同的原因在不同的方向上发生变化。每个对象只应该因为一种变化而修改 6.散弹式修改Shotgun Surgery 与发散式变化相反如果每遇到某种变化都需要在许多不同的类内做出许多修改。 7.依恋情结Feature Envy 对象技术的全部要点在于将数据和对数据的操作行为包装在一起。 坏气味函数对某个类的兴趣高于对自己所处类的兴趣。 有个原则判断哪个类拥有最多被此函数使用的数据然后就把这个函数和那些数据摆咋一起。 8.数据泥团Data Clumps: 你常常看到相同的三四项数据两个类中相同的字段、许多函数签名中相同的参数。这些总绑在一起出现的数据应该拥有属于它们自己的对象。 而且一旦拥有新对象你就可以着手寻找Featrue Envy这可以帮你指出能够移至新类中的种种程序行为。 9.基本类型偏执狂Primitive Obsession: 对象技术的新手通常不愿意在小任务上运用小对象。例如单独由数值、币种两个字段组成的money类。 10.switch惊悚现身Switch Statement: 面向对象程序的一个最明显的特征就是少用switch语句。大多数时候一看到switch语句你就应该考虑以多态来替换它。可以和策略模式一起食用。 11.平行继承体系Paralle Inheritance Hierarchies: 其实是shotgun sergery的特殊情况。如果每当你为某个类增加一个子类必须也为另一个类相应增加一个子类。 12.冗赘类Lazy Class: 如果一个类的所得不值其身价它就应该消失。程序届也不喜欢懒的类。 13.夸夸其谈未来性Speculative Generality 当有人说“噢我想我们总有一天需要做这事”并因而企图以各式各样的钩子和特殊情况来处理一些非必要的事情。 14.令人迷惑的暂时字段Template Field 有时你会看到这样的对象其内某个实例变量仅为某种特定情况而设。 15.过度耦合的消息链Message Chains 如果你看到用户向一个对象请求另一个对象然后向后者请求另一个对象然后再请求另一个对象...这就是消息链。 16.中间人Middle Man 人们可能过度的运用代理中间人。你也许会看到某个接口有一半的函数都委托给其他类这样就是过度运用。 17.狎昵xiá nì关系Inappropriate Intimacy: 有时你会看到两个类过于亲密花费太多时间去探究彼此的private成分。 18.异曲同工的类Alternative Classes with Different Interface 当两个函数做同一件事却有着不同的签名。 19.不完美的类库Incomplete Library Class 麻烦的是类库往往构造的不够好或者有些部分不适用了而且我们往往不可能让我们修改其中的类使它完成工作。 20.幼稚的数据类Data Class 所谓Data Class是指他们拥有一些字段以及用于访问读写这些字段的函数除此之外别无长物。 21.被拒绝的遗赠Refused Bequest 子类应该继承超类的函数和数据。但如果它们不想或不需要继承或者只是需要其中少数元素。 22.过多的注释Comment 常常会有这样的情况你看到一段代码有着长长的注释然后发现这些注释之所以存在乃是因为代码很糟糕这种情况发生次数之多很惊人。 当你感觉需要撰写注释时请先尝试重构试着让所有注释都变得多余。 下一篇详细讲讲怎么除去臭味。转载于:https://www.cnblogs.com/zhaww/p/8664749.html