第三章 代码的坏味道------出现这些情况视为可重构

3.1 Duplicated Code

3.2 Long Method

3.3 Large Class

3.4 Long Parameter List(过长参数列)

3.5 Divergetn Change(发散式变化)

某个类经常因为不同的原因在不同的方向上发生变化

3.6 Shotgun Surgery(霰弹式修改)

如果遇到某种变化,你都必须在很多不同的类内做许多小的修改

使用Move Method 或者Move Field将所有修改的代码放在同一个类

3.7 Feature Envy(依恋情结)

将数据和对数据操作的行为包装在一起

3.8 Data Clumps(数据泥团)

将数据提炼到单独的类中

3.9 Primitive Obsession(对基本数据类型的痴迷)

在某些情况下可以使用简单的类从而取代基础数据类型,或者有一组字段就可以封装成一个类了。

3.10 Switch Statements

3.11 Parallel Inheritance Hierarchies

3.12 Lazy Class

3.13 Speculative Generality

3.14 Temporary Field

3.15 Message Chains

如果一个对象请求另一个对象,然后后者又请求另一个对象...这样成为消息链。

利用Extract Method and Move Method

3.16 Middle Man

避免过度委托

3.17 Inappropriate Intimacy

避免类之间过度亲密

3.18 Alternative Classes witch Different Interfaces

避免不同签名的函数做着同一件事情

3.19 Incomplete Library Class(不完美的类库)

3.20 Data Class (纯粹的数据类)

3.21 Refused Bequest

3.22 Comments 过多的注释

转载于:https://www.cnblogs.com/drinking/archive/2012/11/20/2772660.html

《重构 改善既有代码的设计》笔记相关推荐

  1. 《信贷的逻辑与常识》笔记

    序 银行信贷风险管理的反思 现状与趋势 银行贷款的质量变化与经济周期.宏观调控政策等存在很高的相关性 现在银行不良贷款的增加主要是前几年经济快速增长时企业过度投资.银行过度放贷所带来的结果. 从历史情 ...

  2. AI公开课:19.02.27周逵(投资人)《AI时代的投资逻辑》课堂笔记以及个人感悟

    AI公开课:19.02.27周逵(投资人)<AI时代的投资逻辑>课堂笔记以及个人感悟 目录 课堂PPT图片 精彩语录 个人感悟 课堂PPT图片 精彩语录 更新中-- 文件图片已经丢失-- ...

  3. 人工智能入门算法逻辑回归学习笔记

    逻辑回归是一个非常经典的算法,其中也包含了非常多的细节,曾看到一句话:如果面试官问你熟悉哪个机器学习模型,可以说 SVM,但千万别说 LR,因为细节真的太多了. 秉持着精益求精的工匠精神不断对笔记进行 ...

  4. 【逻辑回归学习笔记】

    算法描述 1.逻辑回归要做的事就是寻找分界面实现二分类. 2.问题假设:对一堆三角形和正方形分类. 3.数据输入:已知正方形和三角形的坐标和标签. 4.算法过程: 知识储备 1.分类和回归 ①分类的目 ...

  5. 逻辑回归函数学习笔记

    继续逻辑回归学习,今日笔记记录. 1.逻辑回归和线性回归的关系:对逻辑回归的概率比取自然对数,则得到的是一个线性函数,推导过程如下. 首先,看逻辑回归的定义 其次,计算两个极端y/(1-y),其值为( ...

  6. 2.2 逻辑回归-机器学习笔记-斯坦福吴恩达教授

    逻辑回归 上一节我们知道,使用线性回归来处理 0/1 分类问题总是困难重重的,因此,人们定义了逻辑回归来完成 0/1 分类问题,逻辑一词也代表了是(1) 和 非(0). Sigmoid预测函数 在逻辑 ...

  7. LVM逻辑卷分区笔记

    磁盘的静态分区有其缺点:分区大小难评估,估计不准确,当分区空间不够用的时候,系统管理员可能需要先备份整个系统,清除磁盘空间,然后重新对磁盘进行分区,然后恢复磁盘数据到新分区,且需要停机一段时间进行恢复 ...

  8. 适合理工直男的钟平老师逻辑英语学习笔记

    一切的一切都只是套路!             --鲁迅 核心公式: En: (状语1) 主(定语1) 谓(状语2) (宾)(定语2) (状语1) Ch: (状语1) (定语1)主 (状语2)谓 (定 ...

  9. 【数字逻辑】学习笔记 第四章 Part2 常用组合逻辑电路与竞争、险象

    文章目录 一.常用组合逻辑电路 1. 译码器 (1) 二进制译码器 74LS138(3/8译码器) a. 一般符号和图形符号 b. 74LS138功能表 c. 两片 `74LS138` 构成 `4-1 ...

  10. 线性回归、逻辑回归学习笔记

    学习源代码 import numpy as np import matplotlib.pyplot as plt def true_fun(X): # 这是我们设定的真实函数,即ground trut ...

最新文章

  1. 百度转换经纬度为地址
  2. 纯php mysql_【总结】纯php 操作 mysql 数据库
  3. 高等数理统计(part1)--随机变量及其分布函数
  4. Java猿面试_猿灯塔:关于Java面试,你应该准备这些知识点
  5. 解决 display 和 transition 冲突的问题
  6. Office2010翻译无处不在
  7. opensource项目_最佳Opensource.com:开放组织
  8. 编程随想 关系图_支持PLC编程的5大语言,全部会用的才是大神!
  9. Impala内存优化
  10. RGB绘制图片Python
  11. Java 中 final 内存语义
  12. python 经验模态分解_心电信号去噪4--经验模态分解法(EMD)
  13. 交通灯系统设计 educoder实训项目 logisim实现
  14. 转载一篇过来人谈的大学期间关于课外学习的意见lt;出自左飞老师笔记gt;
  15. 给衣服加图案photoshop教程
  16. DB2 sequence 获取下一个值
  17. 5.12日,好多人的ksjsb遇到签名认证啦~ 勉强跑跑吧~
  18. C++ 函数指针 类成员函数指针
  19. 什么是亚稳态,如何消除?
  20. 2017年迄今最新人工智能资源

热门文章

  1. 【2019杭电多校第四场1010=HDU6623】Minimal Power of Prime(质因子分解+思维+卡精度)
  2. 牛客小白月赛5求阶乘末尾有多少个0
  3. Xcode证书错误 Provisioning profile does not support the Associated Domains capability
  4. Docker的核心概念镜像Images, 容器Containers, 数据卷Volumes
  5. mysql 备份任务_设置mysql 定时备份任务
  6. 调制方式性能比较--BER,频带效率的极限
  7. 通过反射获取类的完整结构(1)--属性方法
  8. 2020 恒生电子 面经
  9. Torch7 out of memory 解决方法
  10. 【收藏】十个深度学习和机器学习问题速问速答