代码的坏味道之十七 :Inappropriate Intimacy(狎昵关系)
2013-05-03 09:19
621 查看
有时你会看到两个classes过于亲密,花费太多时间去探究彼此的private成分。如果这发生在两个「人」之间,我们不必做卫道之士;但对于classes,我们希望它们严守清规。
就像古代恋人一样,过份狎昵的classes必须拆散。你可以采用 Move Method(搬移函数) 和 Move Field(搬移值域) 帮它们划清界线,从而减少狎昵行径。你也可以看看是否运用 Change Bidirectional Association to Unidirectional
(将双向关联改为单向)让其中一个class对另一个斩断情丝。如果两个实在是情投意合,可以运用Extract Class(提炼类) 把两者共同点提炼到一个安全地点,让它们坦荡地使用这个新class。或者也可以尝试运用 Hide Delegate
(隐藏「委托关系」)让另一个class来为它们传递相思情。
继承(inheritance)往往造成过度亲密,因为subclass对superclass的了解总是超过superclass的主观愿望。如果你觉得该让这个孩子独自生活了,请运用Replace Delegation with Inheritance(以继承取代委托) 让它离开继承体系
就像古代恋人一样,过份狎昵的classes必须拆散。你可以采用 Move Method(搬移函数) 和 Move Field(搬移值域) 帮它们划清界线,从而减少狎昵行径。你也可以看看是否运用 Change Bidirectional Association to Unidirectional
(将双向关联改为单向)让其中一个class对另一个斩断情丝。如果两个实在是情投意合,可以运用Extract Class(提炼类) 把两者共同点提炼到一个安全地点,让它们坦荡地使用这个新class。或者也可以尝试运用 Hide Delegate
(隐藏「委托关系」)让另一个class来为它们传递相思情。
继承(inheritance)往往造成过度亲密,因为subclass对superclass的了解总是超过superclass的主观愿望。如果你觉得该让这个孩子独自生活了,请运用Replace Delegation with Inheritance(以继承取代委托) 让它离开继承体系
相关文章推荐
- 代码坏的味道17:狎昵关系 (Inappropriate Intimacy)
- 3.17 inappropriateintimacy (狎昵关系)
- 重构—改善既有代码的设计003:代码的坏味道(Bad smells in Code)
- Other: 重构—改善既有代码的设计003:代码的坏味道(Bad smells in Code)
- Bad smell in code (代码的坏味道)
- 代码坏的味道19:不完美的库类 (Incomplete Library Class)
- CoInitialize ( NULL )或其它启动代码。MFC程序使用AfxOleInit() 收回COM库。MFC 程序不用这一步,它自动完成。 CoUninitialize();
- 在 C++ 代码中使用 UE4 插件---Using a plugin in C++ code
- # inline hook 的几种方式概述----简单介绍而已,没有代码
- 错误总结之no appropriate constructor in class
- Oracle Null 与 in, exists 的关系说明(not in 查不到结果)
- JAVA继承关系中父类子类代码执行顺序
- 浅谈UML中类之间的五种关系及其在代码中的表现形式
- Literal Regular Expression in Source Code (代码中的字面正则表达式)
- SAP S4 BP事务代码的业务伙伴和供应商,客户之间的表关系
- 21种代码的“坏味道”
- Makefile.am Makefile.in与Makefile文件关系
- 让开发自动化持续重构 --使用静态分析工具识别代码味道
- 代码的坏味道之三——译自《重构》
- Configure,Makefile.am, Makefile.in, Makefile文件之间关系