函数对某个类的兴趣高过对自己所处的类,通常的焦点就是数据,某个函数为了计算某个值,从另一个对象那儿调用几乎半打的取值函数。这时一个运用 Move Method (搬移函数)把它移到自己该去的地方。有时候函数中只有一部分受这种依恋之苦,这时候使用Extract Method (提炼函数)把这部分提炼到独立函数中,再使用Move Method (搬移函数)带它去它的梦中家园。

一个函数往往会用到几个类的功能,那么它究竟该被置与何处呢?原则:判断哪个类拥有最多被此函数使用的数据,然后就把这个函数和那些数据摆在一起。如果先以Extract Method (提炼函数)将这个函数分解为数个较小函数并分别置于不同地点,上述步骤就比较容易完成了。

转载于:https://www.cnblogs.com/matchcolor/archive/2010/08/02/1786532.html

代码坏的味道07:依恋情结(Feature Envy)相关推荐

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

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

  2. 代码坏的味道13:夸夸其谈未来性(Speculative Generality)

    如果你的某个抽象类其实没有太大作用,请运用 Collapse Hierarch (折叠继承体系).不必要的委托可运用 Inline Class (将类内联化)除掉.如果函数的某些参数未被用上,可对它实 ...

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

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

  4. 25种代码坏味道总结+优化示例

    前言 什么样的代码是好代码呢?好的代码应该命名规范.可读性强.扩展性强.健壮性......而不好的代码又有哪些典型特征呢?这25种代码坏味道大家要注意啦 1. Duplicated Code (重复代 ...

  5. 25 种代码坏味道总结+优化示例

    作者 | 捡田螺的小男孩       责编 | 欧阳姝黎 前言 什么样的代码是好代码呢?好的代码应该命名规范.可读性强.扩展性强.健壮性......而不好的代码又有哪些典型特征呢? Duplicate ...

  6. 代码坏味道 - 耦合

    耦合 Feature Envy 症状: 方法访问其他类的对象的属性,而不是自己的. 成因: 最常见的问题就是由数据类引起的. 治疗: 多数时候,同时需要做出改变的code 应该在一起. 收益: 不合适 ...

  7. java滥用接口_吐槽一下项目中的代码坏味道:滥用java常量

    我们的项目中是否充斥着类似以下的代码呢?定义一个专门存放常量的java类(接口),非常多其它类依赖该常量类. public interface IConstant { int ZERO = 0; St ...

  8. 代码坏味道之非必要的

    :notebook: 本文已归档到:「blog」 翻译自:https://sourcemaking.com/refactoring/smells/dispensables 非必要的(Dispensab ...

  9. 代码 | 一天一点代码坏味道(1)

    [代码精进]| 总结/Edison Zhou 作为一个后端工程师,想必在职业生涯中都写过一些不好维护的代码.本文是我学习<代码之丑>的学习总结,今天第一天发车,先来看看在命名上的一些常犯的 ...

最新文章

  1. 计算机视觉开源库OpenCV绘制轮廓,并将轮廓排序~
  2. 京东云上集市谋定中国农民丰收节交易会 建九江电商产业园
  3. Jquery 概念性内容编辑器
  4. Linux记起始和结束时间,Linux历史命令的记住执行时间
  5. 一个容易被忽视的css选择器
  6. Java 算法 身份证排序
  7. 远程办公第一天遇尴尬:企业通讯软件集体罢工、全天开视频
  8. [Python] L1-026. I Love GPLT-PAT团体程序设计天梯赛GPLT
  9. Linux之进程管理基础概念
  10. python 短信_Python怎么接收手机短信?
  11. Mothur3进阶_Mothur扩增子基因序列处理_数据比对、聚类及其处理评估
  12. 优秀java程序员必须具备的技术技能
  13. Bytom Dapp 开发笔记(二):开发流程
  14. tomcat 运行提示The background cache eviction process was unable to free
  15. 打造原生的图文混排控件
  16. js 通讯录(多音字)
  17. 红队作业 | 信息收集工具汇总
  18. R语言里的非线性模型:多项式回归、局部样条、平滑样条、 广义相加模型GAM分析
  19. python进行词频统计_如何利用Python进行文本词频统计
  20. 反编译apk获得源代码

热门文章

  1. Silverlight之变换(6)
  2. vuetify,nginx与cors的使用
  3. Bank Marketing预测一个客户购买理财产品的成功率
  4. 用于 CPX、CPX-VF 和 CRX-VF 探针台的新手提箱选项
  5. docker和kvm的区别,简洁大白话篇,两者的优势对比
  6. CheckBox设置不可点击
  7. 智能家居核心 —— wifi模块
  8. 一个划时代的知识女性——《杨绛传》读书笔记心得感想4300字
  9. 用stm32模拟遥控器初始化电调(电调解锁)(电调行程校准)(附百度云例程)
  10. 忘记CentOS登录密码