美文网首页
换个方式读书

换个方式读书

作者: ross_zhao | 来源:发表于2020-11-21 22:52 被阅读0次

《重构》虽然是本神作,但是内容过于琐碎,《重构与模式》恰恰能帮助解决心理上和软件上的问题。
之前在班车上陆续读完了,可是忘了,缺少实操,浏览式读书太容易忘记了。

所以我打算换个方式。不按目录读书,而是按照代码坏味道对应的修复模式捋一捋。

图无法下载,倒是百度到一篇好文章,摘录一下啊
侵权即删。
<table bordercolor="#82c1d8" cellspacing="0" cellpadding="2" width="98%" align="center" border="1" unselectable="on" auto?="">
<tbody>
<tr style="font-weight: bold; color: rgba(255, 255, 255, 1); height: 30px; background-color: rgba(73, 164, 199, 1); text-align: center">
<td width="30%">代码的坏味道</td>
<td width="35%">一般重构方法</td>
<td width="35%">使用模式重构</td>
</tr>
<tr>
<td width="30%"><strong>重复代码</strong></td>
<td width="35%">提炼方法
提取类
方法上移
替换算法
链构造方法
</td>
<td width="35%">构造Template Method
以Composite取代一/多之分
引入Null Object
用Adapter统一接口
用Fatory Method引入多态创建</td>
</tr>
<tr>
<td><strong>过长方法</strong></td>
<td>提取方法
组合方法
以查询取代临时变量
引入参数对象
保持对象完整</td>
<td>转移聚集操作到Vistor
以Strategy取代条件逻辑
以Command取代条件调度程序
转移聚集操作到Collecting Parameter</td>
</tr>
<tr>
<td><strong>过长参数列</strong></td>
<td>以方法取代参数
引入参数对象
保持对象完整</td>
<td> </td>
</tr>
<tr>
<td><strong>条件逻辑过度复杂</strong></td>
<td>分解条件式
合并条件式
合并重复的条件片段
移除控制标记
以卫语句取代嵌套条件式
以多态取代条件式
引入断言</td>
<td>以Strategy取代条件逻辑
转移装饰功能到Decorator
以State取代状态改变条件语句
引入Null Object</td>
</tr>
<tr>
<td><strong>分支语句</strong></td>
<td>提取方法
转移方法
以子类取代类型代码
以多态取代条件式
已明确方法取代参数</td>
<td>以State/Strategy取代类型代码
引入Null Object
以Command替换条件调度程序
转移聚集操作到Visitor</td>
</tr>
<tr>
<td><strong>基本类型迷恋
</strong>程序代码过于依赖基本类型(int,string,double,array等低层次语言要素)</td>
<td>以对象取代数据值
以类型取代类型代码
以子类取代类型代码
提取类
引入参数对象
以对象取代数组</td>
<td>以State取代状态改变条件语句
以Strategy取代条件逻辑
以Composite取代隐含树
以Interpreter取代隐式语言
转移装饰功能到Decorator
用Builder封装Composite</td>
</tr>
<tr>
<td><strong>数据泥团</strong>
在类的字段和参数列中,总是一起出现的数据</td>
<td>提取类
引入参数对象
保持对象完整</td>
<td> </td>
</tr>
<tr>
<td><strong>令人迷惑的临时字段</strong></td>
<td>提取类</td>
<td>引入Null Object</td>
</tr>
<tr>
<td><strong>组合爆炸
</strong>许多段代码使用不同种类或数量的数据或对象做同样的事情(例如使用特定条件和数据库查询)</td>
<td> </td>
<td>以Interpreter取代隐式语言</td>
</tr>
<tr>
<td><strong>过大类</strong></td>
<td>提取类
提取子类
提取接口
复制被监视数据</td>
<td>以Command取代条件调度程序
以State取代状态改变条件语句
以Interpreter取代隐式语言</td>
</tr>
<tr>
<td><strong>冗赘类</strong>
不再做很多工作或没有用的类</td>
<td>折叠继承关系
内联Singleton</td>
<td> </td>
</tr>
<tr>
<td><strong>不恰当的暴露
</strong>在客户代码中不应看到类的字段和方法,却是公开可见的</td>
<td>封装字段
封装群集
移除设置方法
隐藏方法</td>
<td>用Factory封装类</td>
</tr>
<tr>
<td><strong>发散式变化</strong>
类经常因为不同的原因在不同方向上发生变化,显然是违反了单一职责原则</td>
<td>提取类</td>
<td> </td>
</tr>
<tr>
<td><strong>霰弹式修改</strong>
如果遇到变化,必须在不同的类中作出相应的修改</td>
<td>转移方法
转移字段
内联类</td>
<td>将创建知识搬移到Factory</td>
</tr>
<tr>
<td><strong>依恋情结
</strong>方法对于某个类的兴趣高过对自己所处的宿主类</td>
<td>转移方法
提取方法</td>
<td>引入Strategy
引入Visitor</td>
</tr>
<tr>
<td><strong>平行继承体系
</strong>当为一个类增加一个子类时,也必须在另一个类中增加一个相应的子类</td>
<td>转移方法
转移字段</td>
<td> </td>
</tr>
<tr>
<td><strong>夸夸其谈未来性</strong></td>
<td>折叠继承关系
内联类
移除参数
移除方法</td>
<td> </td>
</tr>
<tr>
<td><strong>过度耦合的消息连
</strong>不断的向一个对象索求另一个对象</td>
<td>隐藏委托
提取方法
转移方法</td>
<td>使用抽象引入Chain Of Responsibility</td>
</tr>
<tr>
<td><strong>中间转手人
</strong>类接口中有很多方法都委托给其他类</td>
<td>移除中间转手人
内联方法
以继承取代委托</td>
<td> </td>
</tr>
<tr>
<td><strong>狎昵关系
</strong>类之间彼此依赖于其private成员</td>
<td>转移方法
将双向关联改为单向
提取类
隐藏委托
以继承取代委托</td>
<td> </td>
</tr>
<tr>
<td><strong>异曲同工的类</strong></td>
<td>重命名方法
转移方法
提取超类</td>
<td>用Adapter统一接口</td>
</tr>
<tr>
<td><strong>不完善的程序库类</strong></td>
<td>引入外加方法
引入本地扩展</td>
<td>用Adapter统一接口
用Facade封装类</td>
</tr>
<tr>
<td><strong>纯稚的数据类
</strong>只拥有字段的数据类</td>
<td>封装字段
封装集合
移除设置方法
转移方法
隐藏方法</td>
<td> </td>
</tr>
<tr>
<td><strong>被拒绝的遗赠
</strong>继承父类时,子类想要选择继承的成员</td>
<td>以委托取代继承</td>
<td> </td>
</tr>
<tr>
<td><strong>过多的注释
</strong>为糟糕的代码写大量的注释</td>
<td>使用一起重构方法,使方法本身达到自说明的效果,让注释显得多余</td>
<td> </td>
</tr>
<tr>
<td><strong>怪异解决方案
</strong>在同一系统中使用不同的方式解决同一问题</td>
<td>替换算法</td>
<td>用Adapter统一接口</td>
</tr>
</tbody>
</table>

link

相关文章

  • 换个方式读书

    今天晚上,妈妈和我一起读书,读了《弟子规》第1-15页,《三字经》第1-15页,《易经》第1-5页。 开始读书了,...

  • 换个方式读书

    《重构》虽然是本神作,但是内容过于琐碎,《重构与模式》恰恰能帮助解决心理上和软件上的问题。之前在班车上陆续读完了,...

  • 换个方式读书

    在读书过程中,发现有很多类似以前读过的章节,有着好像在哪见过的那种感觉,于是就很快的读完了一整本书。如果发现有些书...

  • 换个方式来读书

    一直以为读书多了,写作水平也会提高 ,我也自认为读的书也有那么多了。但面对今天下午的语文考试作文,我却不知如何下笔...

  • 换个方式

    食人间烟火,吃五谷杂粮,偶尔一次的头疼脑热感冒发烧,大人可以抗一抗,小儿抵抗力较低就要治一治了,免得延误病情。 上...

  • 换个方式

    想像聊天一样说完自己的一天,早上去了图书馆复习了一个多小时之前学的教综,之后去上课,上到了十二点,出去给舍友买礼物...

  • 换个方式

    一个眼神便可诠释所有 在对与错的分界线上 特别是沉默的眼神 像黑与白那样分明 一个念头也可以封埋所有 不用假装与虚...

  • 换个方式

    宇宙是广大无边的记忆系统 曾是星辰的我们 如今不过是换了种方式存在 若你回头看 就会发现这世界在不断的开始 我们也...

  • 换个方式

    午后的阳光格外温暖,于是洗了一盆草莓和孩子坐在阳台分享。突然想起天气渐暖,过冬的棉衣还没有收拾起来,就叮嘱...

  • 换个方式

    终于一条腿正式回归了,看着路上骑行的身影,自己的心思也动了。准备收拾一下心情,及回归到骑行的行列。虽然因腿伤,很长...

网友评论

      本文标题:换个方式读书

      本文链接:https://www.haomeiwen.com/subject/clryiktx.html