重构与模式(Refactoring to Patterns)-读书笔记
第一章
☛过度设计:是指代码的灵活性和复杂性超出所需。
第二章
☛重构是一种保持行为的转换。
第三章
☛每一个模式都是由三部分组成的规则,他表达的是某一环境,一个问题以及解决问题的方案之间的关系。
☛模式痴迷:对模式过于依赖。
第四章
☛代码坏味道
●代码重复(Duplicated Code)
通常可以通过形成Template Method重构。
●方法过长(Long Method)
●条件逻辑太复杂(Conditional Complexity)
●基本类型迷恋(Primitive Obsession)
●不恰当的暴漏(Indecent Exposure)
用工厂封装类重构可以去除这种坏味道。
●解决方案蔓延(Solution Sprawl)
●异曲同工的类(Alternative Classes with Different Interfaces)
●冗余类(Lazy class)
●类过大(Large Class)
●分支语句(Switch Statement)
●组合爆炸(Combinatorial Explosion)
●怪异解决方案(Oddball Solution)
第六章
☛解决各种设计代码的问题
●用Creation Method 替换构造函数
类中有多个构造函数,很难决定用哪一个。
● 将创建知识版移到Factory
用来实例化的一个类的数据和代码在多个类中到处都是。移到factory。
●用Factory封装类
直接实例化处在同一包结构中,实现同一接口的多个类。把类的构造函数声明为非公共的,并通过Factory来创建他们的实例。
●用Factory Method 引入多态的创建。
一个层次中的类都类似的实现一个方法,只是创建的步骤不同。创建调用Factory Method来处理实例化的方法的唯一超类版本。
第七章
☛简化
●组合方法
你无法迅速的理解一个方法的逻辑。把方法的逻辑转换成几个同一细节层面上的,能够说明意图的步骤。
●用Strategy替换条件逻辑。
方法中条件逻辑控制着应该执行哪个计算的变体,为每一个变体创建一个Strategy并使方法把计算委托到Strategy实例。
●将装饰功能搬移到Decorator
代码向类的核心职责提供装饰的功能。将装饰代码搬移到Decorator。
●用state替换状态改变条件语句
控制一个对象的转换条件的表达式过于复杂。
用处理特殊状态和转换的State类来替换条件语句。
●
●
●
●
●
☛☛☛☛☛☛☛☛☛
●
重构与模式(Refactoring to Patterns)-读书笔记的更多相关文章
- 重构(Refactoring)技巧读书笔记(General Refactoring Tips)
重构(Refactoring)技巧读书笔记 之一 General Refactoring Tips, Part 1 本文简要整理重构方法的读书笔记及个人在做Code Review过程中,对程序代码常用 ...
- 《Small Memory Software:Patterns For System With Limited Memory》读书笔记
原文地址:http://blog.csdn.net/jinzhuojun/article/details/13297447 虽然摩尔定律让我们的计算机硬件得以以指数速度升级,但反摩尔定律又不断消减这些 ...
- 《企业应用架构模式》(POEAA)读书笔记
原文地址:<企业应用架构模式>(POEAA)读书笔记作者:邹齐龙(技术-5013 什么是架构 Rolph Johnson认为:架构是一种主观上的东西,是专家级的项目开发人员对系统设计的一些 ...
- ITEYE中的读书笔记:重构其实就是持续改进
原文地址:http://hawkon.iteye.com/blog/2093338#bc2355877 前段时间同事参加ITEYE的试读有奖, 没想到得了个奖,拿到一本书.由于同事的推荐我也认真读了一 ...
- 《Head First 设计模式》读书笔记(1) - 策略模式
<Head First 设计模式>(点击查看详情) 1.写在前面的话 之前在列书单的时候,看网友对于设计模式的推荐里说,设计模式的书类别都大同小异,于是自己就选择了Head First系列 ...
- 《CLR via C#》读书笔记(一)——CLR的执行模式
前言 万事开头难,很早之前就想写博客记录些东西,迟迟未行动,甚是遗憾.原因诸多,大体上无非都是懒.没意志力等等.这次从自己的读书笔记开始,兴许能够有所改变. 一.CLR概念 CLR(Common La ...
- Head First 设计模式读书笔记(1)-策略模式
一.策略模式的定义 策略模式定义了算法族,分别封装起来,让它们之间可以互换替换,此模式让算法的变化独立使用算法的客户. 二.使用策略模式的一个例子 2.1引出问题 某公司做了一套模拟鸭子的游戏:该游戏 ...
- 读书笔记《PHP高级程序设计、模式、框架与测试》
序言 闲来无事,下载了一些电子书,然后看书名不错<PHP高级程序设计_模式.框架与测试>,翻了一下虽然书有点老了但是讲的内容经常会碰到!给大家推荐一下,然后这里放上我的读书笔记,每日更新. ...
- 存储器的保护(三)——《x86汇编语言:从实模式到保护模式》读书笔记20
存储器的保护(三) 修改本章代码清单,使之可以检测1MB以上的内存空间(从地址0x0010_0000开始,不考虑高速缓存的影响).要求:对内存的读写按双字的长度进行,并在检测的同时显示已检测的内存数量 ...
随机推荐
- Hadoop JAVA 开发说明
作为Hadoop程序员,他要做的事情就是: 1.定义Mapper,处理输入的Key-Value对,输出中间结果.2.定义Reducer,可选,对中间结果进行规约,输出最终结果.3.定义InputFor ...
- JDK,JRE,JVM分别是什么?
JDK(Java Development Kit) 是 Java 语言的软件开发工具包(SDK). JDK包含的基本组件包括: javac – 编译器,将源程序转成字节码 jar – 打包工具,将相关 ...
- codeforces 632+ E. Thief in a Shop
E. Thief in a Shop time limit per test 5 seconds memory limit per test 512 megabytes input standard ...
- Web测试介绍一 UI测试
随着Web 2.0技术的迅速发展,许多公司都开发了一些基于Web的网站服务,通常在设计开发Web应用系统的时候很难模拟出大量用户同时访问系统的实际情况,因此,当Web网站遇到访问高峰时, ...
- svg.js教程及使用手册详解(二)
上篇简要介绍了svg.js的基本信息和基本用法,这篇开始详细讲解svg.js的用法. SVG元素 SVG元素主要包括各种形状.线条.文本.路径. 矩形——Rect Rects有两个参数,即矩形的宽度和 ...
- 使用javascript生成的植物显示过程特效
查看效果:http://keleyi.com/keleyi/phtml/html5/33.htm .NET版本:http://keleyi.com/a/bjac/66mql4bc.htm 完整HTML ...
- webpack初入
序言:前面已经倒腾了grunt.gulp.fis3,今天来通过一个例子玩玩webpack!最终预览 通过下面的例子,能够了解以下几点: 1.如何安装webpack 2.如何使用webpack 3.如何 ...
- UIPickerView的使用(三)
前两篇文章 UIPickerView的使用(一) . UIPickerView的使用(二),学习了UIPickerView的单列选择器和双列选择器的使用. 现在我们一起学习相互依赖的多列选择器 1.遵 ...
- 服务器重启后导致访问ArcServer地图服务须登录
问题状况: 重启服务器后,在访问网站的地图服务时会提示登录,输入各种密码账号都不好用 解决方法: 通过进入[服务管理器],找到ArcGISServer的服务,重新启动该服务就可以.
- EA(企业架构)落地之道
随着业务和IT的不断融合,企业业务.信息系统和技术结合日益紧密,企业对信息系统及技术的敏捷性要求越来越高.如何在多变的环境下快速创新产品或服务并推向市场是企业面临的日益紧迫的压力.企业架构作为连接和匹 ...