函数对某个类的兴趣高过对自己所处类的兴趣。

一个函数往往会用到几个类的功能,那么它究竟该被置于何处呢?判断哪个类拥有最多被此函数使用的数据,然后就把这个函数和那些数据摆在一起。

将总是一起变化的东西放在一起。数据和引用这些数据的行为总是一起变化,但也有例外。如果例外出现,我们就搬移那些行为,保持变化只在一地发生。strategy和visitor使你得以轻松修改函数行为,因为它们将少量需被覆写的行为隔离开来,当然也付出了“多一层间接性”的代价。

3.7 Feature envy(依恋情结)相关推荐

  1. 3.7 Feature Envy 依恋情结

    数据本身和对数据的操作没有包装在同一个类中,则形成依恋情结 方法对某个类的兴趣大于对自己所处类的兴趣 使用 7.1 Move Method 迁移方法 将该方法移至他应该属于的类 方法的一部分更适合于其 ...

  2. 简单易懂读《重构》 - Feature Envy (依恋情结)

    含义: 某个函数为了实现其功能,经常从另一个类中获取大量数据.比起自身所在的类来说,更加依赖于另一个类 坏处: 代码结构混乱,类分功不明确,可能造成其他坏味道. 目标: 确定类的具体作用,并合理摆置每 ...

  3. 代码坏味道 之 7 依恋情结 feature envy

    <重构:改善既有代码的设计>中提到过一些代码的坏味道,针对这些坏味道,需要进行重构. 依恋情结 feature envy 问题1: 函数对某个类的兴趣搞过对自己所处类的兴趣.某个函数为了计 ...

  4. 狎昵关系和依恋情结辨诠

    Inappropriate Intimacy(狎昵关系) 表现:两个classes过于亲密,花费太多时间去探究彼此的private成分 解决:你可以采用 Move Method 和 Move Fiel ...

  5. 用重构指导Clean Code(二):依恋情结和switch语句

    书接上回,我们继续聊如何用重构指导Clean Code. 在Clean Code的3.4节中有这样一段代码(代码清单3-4).(第3章主要讲的是函数,而3.4节讨论的是switch语句.) publi ...

  6. 代码坏味道与重构之霰弹式修改和依恋情结

    文章目录 1. 霰弹式修改 2. 依恋情结 1. 霰弹式修改 定义:指每遇到某种变化,你都必须在许多不同的类内做出许多小修改. 影响:需要修改的代码散落各处,难以找到他们,容易修改遗漏. 重构目标:代 ...

  7. 【从本人QQ空间迁移】重构“依恋情结”(以黑名单的新增编辑为例)

    本次黑名单新增编辑方法也是使用上次说的form,关于form不再阐述. /*跳转至新增.修改页面*/ public ActionForward turnToEditBlack(ActionMappin ...

  8. 代码的坏味道之七 :Feature Envy(依恋情结)

    对象技术的全部要点在于:这是一种「将数据和加诸其上的操作行为包装在一起」 的技术.有一种经典气味是:函数对某个class的兴趣高过对自己所处之host class的兴趣.这种孺慕之情最通常的焦点便是数 ...

  9. 代码坏的味道07:依恋情结(Feature Envy)

    函数对某个类的兴趣高过对自己所处的类,通常的焦点就是数据,某个函数为了计算某个值,从另一个对象那儿调用几乎半打的取值函数.这时一个运用 Move Method (搬移函数)把它移到自己该去的地方.有时 ...

最新文章

  1. 使用Netbeans创建java Web项目
  2. MongoDB-GRIDFS大文件系统
  3. python使用笔记:sys.argv[]的使用
  4. Spring 5.0 源码编译, 403, 404 依赖pom 无法下载问题
  5. 互联网1分钟 |1129
  6. 海湾监控计算机,海湾GST-DH9300电气火灾监控图形显示系统软件
  7. 如何使用初始化列表消除冗余C++代码
  8. 证据理论的模态逻辑解释
  9. 易语言列表框防止项目重复加入列表框
  10. Linux系统安全强化指南
  11. T410i笔记本DP线转接HDMI链接外设无法传输声音问题解决
  12. 高冷一字id_一字网名男生高冷霸气
  13. Cloudera 简介、安装和升级、管理、操作文档
  14. c# 中通快递对接_物流快递单号智能识别快递公司API接口 C#
  15. PE工具制作(大白菜+U盘启动模式)+系统重装
  16. 利用mininet模拟SDN架构并进行DDoS攻击与防御模拟(Ryu+mininet+sflow+postman)
  17. vue 前端中如何改变图标大小
  18. Sql 获取当前日期没有时分秒
  19. Matlab/Simulink之STM32开发
  20. hse是什么意思的缩写_什么是HSE? HSE是什么?

热门文章

  1. 计算机操作员证书等级有哪些,还有多少不知道职业资格证书分为几个等级的 赶快脑补一下吧...
  2. IOS端向下滑动骤停
  3. 基于Ubuntu20.04 GTX960m搭建cudacunn
  4. [Swift通天遁地]一、超级工具-(16)使用JTAppleCalendar制作美观的日历
  5. 阿里云创建及管理bucket(二)
  6. JavaScript中方法或者变量名称前加下划线的是什么意思?
  7. e4a数据库mysql中间件_[e4a同步内陆数据库至mysql]?确立一个中间件毗邻数据库
  8. 2019大数据领域十大必读书籍
  9. 青海湖鸟岛上神气的蛋
  10. JS-开启麦克风和摄像头权限