重构——62提炼子类(Extract Subclass)
提炼子类(Extract Subclass)
类中的某些特性只被某些实例用到;新建一个子类,将上面所说的那一部分特性移到子类中
一、动机
你发现类中的某些行为只被一部分实例用到,其他实例不需要它们
二、做法
1、为源类定义一个新的子类
2、为这个新的子类提供构造函数
3、找出调用超类构造函数的所有地点。如果它们需要的是新建的子类,令它们改而调用新的构造函数
4、逐一使用Push Down Method和Push Down Field将源类特性移到子类去
5、Replace Conditional with Polymorphism
6、每次下移后,编译并测试
重构——62提炼子类(Extract Subclass)相关推荐
- 步步为营 .NET 代码重构学习笔记 二、提炼方法(Extract Method)
动机(Motivation) Extract Method是我们最常用的重构手法之一.当我们看见一个过长的函数或一段需要注释才能让人理解用途的代码,我们就会将这段代码放进一个独立函数中. 有数个原因造 ...
- 【第十一章】提炼子类/超类/接口/类
前面几章都是针对重复代码,条件表达等小型的重构,直到本章才开始稍微大型的重构. 其实无外乎 提炼类 提炼子类 提炼超类 提炼接口 一.继承还是组合 这个是个分水岭,在Java编程思想中,有一句话组合优 ...
- 重构笔记——提炼函数
本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/42214393 在前面的三篇文章中介绍了重构 ...
- Extract Subclass(提炼子类)
类中的某些特性只被某些实例用到 重构:新建一个子类,将一部分特性搬移到子类中
- 重构手法——提炼函数、搬移函数、以多态取代条件表达式
目录 我的心路历程 我的学习概括 Extract Method(提炼函数) 动机*--做法 动机--做法* Move Method(搬移函数) 动机*--做法 动机--做法* Replace Cond ...
- 提炼函数(Extract Method)
一.提炼函数 1.有一段代码可以被组织在一起并独立出来 2.将这些代码放进一个函数,并函数的用途来命名 二.函数的作用 1.解释性(以函数的名称解释其用途) 2.复用性(避免重复代码) 3.可读性(小 ...
- 代码重构(二)25种代码优化示例
前言 什么样的代码是好代码呢?好的代码应该命名规范.可读性强.扩展性强.健壮性......而不好的代码又有哪些典型特征呢? 1. Duplicated Code (重复代码) 重复代码就是不同地点,有 ...
- 25种代码坏味道总结+优化示例
前言 什么样的代码是好代码呢?好的代码应该命名规范.可读性强.扩展性强.健壮性......而不好的代码又有哪些典型特征呢?这25种代码坏味道大家要注意啦 1. Duplicated Code (重复代 ...
- 怎么让代码不再臃肿,写的像诗一样优雅
2019独角兽企业重金招聘Python工程师标准>>> 基本类型偏执 基本类型偏执(Primitive Obsession) 使用基本类型而不是小对象来实现简单任务(例如货币.范围. ...
- 25 种代码坏味道总结+优化示例
作者 | 捡田螺的小男孩 责编 | 欧阳姝黎 前言 什么样的代码是好代码呢?好的代码应该命名规范.可读性强.扩展性强.健壮性......而不好的代码又有哪些典型特征呢? Duplicate ...
最新文章
- Linux 单用户模式修改密码与救援模式修改密码总结
- 从centos7默认安装的/home中转移至根目录/ (LVM操作简明教程)
- 九度OJ 1051:数字阶梯求和
- HashMap在java并发中如何发生死循环
- LINUX下载编译libsrtp-1.5.0
- windows 游戏编程 一windows 编程
- JavaScript、canvas小球加速和减速运动
- 迭代法求根c语言程序对数方程,【实验一】方程求根:牛顿迭代法
- python打印列表的下标和值的例子:
- 沉淀+树脂吸附工艺为铅酸电池废水处理提供新思路
- Hello 内存 cache 主存 外存
- 工作4年从美团、陌陌、百度、阿里面试回来感想
- C#面向对象程序设计课程实验五:实验名称:C#面向对象技术
- 交流群和一些工具分享
- 互联网与达尔文进化论的结合
- 软考之软件设计师——计算机网络及知识产权
- 面试资料整理(整理中~)
- Linux 内核揭密
- 电脑(Windows)常用快捷键
- angular4 环境变量配置
热门文章
- [19/05/06-星期一] JDBC(Java DataBase Connectivity,java数据库连接)_基本知识
- ubuntu服务器无法运行chromedriver解决方法(转)
- xtrabackup 备份
- 20155327-20155329信息安全技术实验一实验报告
- 第五十篇、OC中常用的第三插件
- 概率论与数理统计图解.tex
- Android的NDK开发(2)————利用Android NDK编写一个简单的HelloWorld
- hge引擎写的一个扫雷小游戏
- SharePoint 2007部署过程详细图解(上)— 前期环境搭建
- CatBoost的Python与R实现