代码坏的味道17:狎昵关系 (Inappropriate Intimacy)
有时候你会看到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)相关推荐
- 狎昵关系和依恋情结辨诠
Inappropriate Intimacy(狎昵关系) 表现:两个classes过于亲密,花费太多时间去探究彼此的private成分 解决:你可以采用 Move Method 和 Move Fiel ...
- 代码坏的味道13:夸夸其谈未来性(Speculative Generality)
如果你的某个抽象类其实没有太大作用,请运用 Collapse Hierarch (折叠继承体系).不必要的委托可运用 Inline Class (将类内联化)除掉.如果函数的某些参数未被用上,可对它实 ...
- 代码坏的味道07:依恋情结(Feature Envy)
函数对某个类的兴趣高过对自己所处的类,通常的焦点就是数据,某个函数为了计算某个值,从另一个对象那儿调用几乎半打的取值函数.这时一个运用 Move Method (搬移函数)把它移到自己该去的地方.有时 ...
- 25种代码坏味道总结+优化示例
前言 什么样的代码是好代码呢?好的代码应该命名规范.可读性强.扩展性强.健壮性......而不好的代码又有哪些典型特征呢?这25种代码坏味道大家要注意啦 1. Duplicated Code (重复代 ...
- 25 种代码坏味道总结+优化示例
作者 | 捡田螺的小男孩 责编 | 欧阳姝黎 前言 什么样的代码是好代码呢?好的代码应该命名规范.可读性强.扩展性强.健壮性......而不好的代码又有哪些典型特征呢? Duplicate ...
- 表达式必须是可修改的左值怎么解决_如何解决代码腐败的味道
一. Duplicated Code(重复代码) 如果你在一个以上的地点看到相同的程序结构,设法将他们合而为一,程序会变得更好. 同一个类的两个函数含有相同的表达式,采用Extract Method( ...
- 讲点码德!避免这些代码坏味道,努力做一名优秀的程序员
Martin Fowler:任何一个傻瓜都能写出计算机可以理解的代码.唯有写出人类容易理解的代码,才是优秀的程序员. 大家闭着眼睛想一下什么是好代码?也许你的脑海中漂浮着一堆词:干净.整洁.命名规范. ...
- 讲点武德!避免这些代码坏味道,努力做一名优秀的程序员
Martin Fowler:任何一个傻瓜都能写出计算机可以理解的代码.唯有写出人类容易理解的代码,才是优秀的程序员. 大家闭着眼睛想一下什么是好代码?也许你的脑海中漂浮着一堆词:干净.整洁.命名规范. ...
- java 代码坏味道_代码中的坏味道
前言 在日常生活中,当我们买的水果放久了之后会发出一种难闻的气味("坏味道"),这个时候我们就应该把它扔掉.同样,代码也有"坏味道",当然确定什么是和不是代码& ...
- java滥用接口_吐槽一下项目中的代码坏味道:滥用java常量
我们的项目中是否充斥着类似以下的代码呢?定义一个专门存放常量的java类(接口),非常多其它类依赖该常量类. public interface IConstant { int ZERO = 0; St ...
最新文章
- OCI读取单条记录(C)
- char[],char *,string之间转换
- 联合权值 NOIP2014 提高组 Day1 T2
- JVM在JDK1.8的变化
- 数据结构与算法 | 带头双向循环链表
- hadoop eclipse plugin windows下载集合
- 【spring】通过GZIP压缩提高网络传输效率(可以实现任何资源的gzip压缩、包括AJAX)
- 移动端之flexible.js
- 第一次作业 四班05
- 彻底搞懂Scrapy的中间件(二)
- 第十五讲 循环体for基础
- 水槽中倒水,Pour Water
- 1.4.1用空间向量研究直线、平面的位置关系教学设计
- 杨校老师课堂之Hadoop环境搭建(一)
- JavaScript基础-前端开发
- C#解压zip和rar文件
- mysql pxc 安装_MYSQL PXC 集群安装
- Python实现鸡群算法
- 程序员的 Python“劝退”指南!
- 计算机网络-CSMA/CD协议