有时候你会看到2个类过于亲密,花费太多时间起探究彼此的private成分。你可以采用Move Method (搬移函数)和 Move Field (搬移字段)帮他们划清界限。你也可以看看是否可以运用 Change Bidirectional Association to Unidirectional (将双向关联改为单向关联)让其中一个类对另一个斩断情丝。如果2个类实在是情投意合,可以运用 Extract Class (提炼类)把2者共同点提炼到一个安全地点,让它们坦荡的使用这个新类。或者可以尝试运用 Hide Delegate (隐藏委托关系)让另一个类来为它们传递相思情。

继承往往造成过度亲密,因为子类对超类的了解总是超过后者的主观愿望,如果你觉得该让这个孩子独自生活了,请运用 Replace Inheritance with Delegation (以委托取代继承)让它离开继承关系。

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

代码坏的味道17:狎昵关系 (Inappropriate Intimacy)相关推荐

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

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

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

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

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

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

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

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

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

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

  6. 表达式必须是可修改的左值怎么解决_如何解决代码腐败的味道

    一. Duplicated Code(重复代码) 如果你在一个以上的地点看到相同的程序结构,设法将他们合而为一,程序会变得更好. 同一个类的两个函数含有相同的表达式,采用Extract Method( ...

  7. 讲点码德!避免这些代码坏味道,努力做一名优秀的程序员

    Martin Fowler:任何一个傻瓜都能写出计算机可以理解的代码.唯有写出人类容易理解的代码,才是优秀的程序员. 大家闭着眼睛想一下什么是好代码?也许你的脑海中漂浮着一堆词:干净.整洁.命名规范. ...

  8. 讲点武德!避免这些代码坏味道,努力做一名优秀的程序员

    Martin Fowler:任何一个傻瓜都能写出计算机可以理解的代码.唯有写出人类容易理解的代码,才是优秀的程序员. 大家闭着眼睛想一下什么是好代码?也许你的脑海中漂浮着一堆词:干净.整洁.命名规范. ...

  9. java 代码坏味道_代码中的坏味道

    前言 在日常生活中,当我们买的水果放久了之后会发出一种难闻的气味("坏味道"),这个时候我们就应该把它扔掉.同样,代码也有"坏味道",当然确定什么是和不是代码& ...

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

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

最新文章

  1. OCI读取单条记录(C)
  2. char[],char *,string之间转换
  3. 联合权值 NOIP2014 提高组 Day1 T2
  4. JVM在JDK1.8的变化
  5. 数据结构与算法 | 带头双向循环链表
  6. hadoop eclipse plugin windows下载集合
  7. 【spring】通过GZIP压缩提高网络传输效率(可以实现任何资源的gzip压缩、包括AJAX)
  8. 移动端之flexible.js
  9. 第一次作业 四班05
  10. 彻底搞懂Scrapy的中间件(二)
  11. 第十五讲 循环体for基础
  12. 水槽中倒水,Pour Water
  13. 1.4.1用空间向量研究直线、平面的位置关系教学设计
  14. 杨校老师课堂之Hadoop环境搭建(一)
  15. JavaScript基础-前端开发
  16. C#解压zip和rar文件
  17. mysql pxc 安装_MYSQL PXC 集群安装
  18. Python实现鸡群算法
  19. 程序员的 Python“劝退”指南!
  20. 计算机网络-CSMA/CD协议

热门文章

  1. 小伙伴要我给他介绍一些非常酷炫而有趣又容易上手的前端框架
  2. Win11开始菜单怎么改成Win10模式?
  3. Intel 网卡使用
  4. intel 7260 wifi linux,TK1入门教程基础篇-安装intel7260无线网卡
  5. android监听软键盘弹出弹回事件
  6. 深空时代来临,探日究竟有何魔力?
  7. GPU并行计算版函数图像生成器
  8. 名著赏读 | 4个月来的经验总结
  9. WindowsMobile6之“HTC Touch” - iphone的强大竞争对手
  10. 再见python你好go语言_再见,Python!你好,Go语言