`

《重构》笔记 三 在对象之间搬移特性 MoveMethod

 
阅读更多

一。 Move Method

动机:函数搬移是重构理论的支柱。如果一个Class有太多的行为,或如果一个Class与另一个Class有太多合作而形成高度耦合,就需要搬移函数。通过这种手段,我可以是系统中的Class更简单,这些Class最终也将更干净利落的实现系统交付的任务。

常常我会浏览Class的所有函数,从中寻找这样的函数:使用另一个对象的次数比使用自己所驻对象的次数还多。一旦我移动了一些值域,就该做这样的检查。一旦发现有可能被搬移的函数,我就会观察调用了她的那一端、她调用的那一端,以及继承体系中他的任何一个从定义函数。然后,我会根据这个函数于那个对象的交流比较多,决定其移动路径。

 

eg。

class Account ...
    private function overdraftCharge():Number {
        if(_type.isPremium()) {
                var result:Number = 10;
                if(_daysOverdrawn > 7 ) result += (_daysOverdrawn      -7)*0.85;
                 return result;
        }
         else {
                 return _daysOverdrawn * 1.75;
         }
    }

     private var _type:AccountType;
     private var _daysOverdrawn:int;
 
分享到:
评论

相关推荐

    PHP 杂谈《重构-改善既有代码的设计》之二 对象之间搬移特性

    #### 对象间搬移特性的具体重构方法 ##### Move Method(搬移函数) 当一个类中的方法与其他类有太多交集时,可以在另一个类中创建一个功能相似的新函数,然后将原函数转换为纯代理函数(Delegating Method),...

    重构-改善既有代码的设计(chm清晰版)

    章节七 在对象之间搬移特性 章节八 重新组织数据 章节九 简化条件表达式 章节十 简化函数调用 章节十一 处理概括关系 章节十二 大型重构 章节十三 重构,复用与现实 章节十四 重构工具 章节十五 集成

    [免费高清PDF]31天重构系列笔记.rar

    15-21天,笔记可能深入到C#中的高级重构技术,如重构面向过程代码为面向对象代码,使用 LINQ 来简化数据操作,以及如何通过依赖注入来提高组件之间的灵活性。 22-28天,作者可能会探讨如何在实际项目中应用重构,...

    三维重构 、基于切片的三维重构 、三维重构的缺陷检测 ,matlab GUI界面的形式

    三维重构 可以检测有效的系统缺陷,进行缺陷的定位,缺陷体积的测量等,如何进行三维重构(3D reconstuction)的输入是各种三维以下的数据,比如纯二维的RGB图像(序列)、带有深度信息的RGBD数据等,出来的是三维...

    重构笔记

    在源码层面,重构涉及多种技术,如提取函数、提取类、引入参数对象、消除重复代码等。这些技术都是为了将复杂的代码分解为更小、更易理解的部分,使得每个部分都专注于单一的责任。例如,提取函数可以帮助我们将大段...

    基于matlab的三维重构

    本文主要介绍了基于Matlab的三维重构方法,通过对两幅图像的特征点进行匹配和重构,得到三维对象的结构信息。该方法可以应用于计算机视觉、机器人视觉、图像处理等领域。 一、实验目的 本实验的目的是从两幅图像中...

    运用DAO和对象化进行重构_项目教程(1)_

    对象化则涉及到类的设计,通过封装、继承和多态等面向对象特性,将数据和操作数据的方法组合在一起,形成一个个具有特定行为的对象。在重构过程中,可能需要将数据库表映射为对象,每个对象代表一类数据,对象的属性...

    重构-改善既有代码的设计

    第7章 在对象之间搬移特性 141 7.1 Move Method(搬移函数) 142 7.2 Move Field(搬移字段) 146 7.3 Extract Class(提炼类) 149 7.4 Inline Class(将类内联化) 154 7.5 Hide Delegate(隐藏“委托...

    重构:改善既有代码的设计.[美]Martin Fowler.epub【文字版手机格式】

    第7章 在对象之间搬移特性 7.1 Move Method(搬移函数) 7.2 Move Field(搬移字段) 7.3 Extract Class(提炼类) 7.4 Inline Class(将类内联化) 7.5 Hide Delegate(隐藏“委托关系”) 7.6 Remove Middle Man(移除...

    LBM3D.rar_三维多孔介质_三维重构_多孔_曲面重构_曲面重构MATLAB

    无论是哪种数据来源,三维重构的目的都是为了在计算机中复现多孔介质的三维结构,以便进一步研究其物理特性。 多孔介质的研究不仅限于地质和材料科学领域,还涉及到环境工程、能源技术以及生命科学等众多领域。在...

    重构 改善既有代码的设计

    Chapter 7:Moving Features Between Objects 在对象之间移动特性  *Move Method 移动方法   Move Field 移动字段   Extract Class 提取类   Inline Class 内联类   Hide Delegate 隐藏委托类   ...

    重构代码笔记1

    本文以"重构代码笔记1"为出发点,深入探讨了24种常见的代码坏味道及其对应的重构策略。 首先,神秘命名(Mysterious Name)是重构的常见起点,通过改变函数声明和变量名,使其更具描述性,如将`cash0`更改为`cash_...

    31天重构学习笔记中文版

    重构是指在不改变代码外部行为的前提下,对其内部结构进行改进的过程。这一过程能够帮助程序员更好地理解和维护代码,提高软件的质量。 #### 1.2 重构的目的 - **提高代码质量**:通过简化代码逻辑、减少冗余等...

    重构在面向对象设计中的应用

    #### 三、重构在面向对象设计中的应用 面向对象设计改进主要包括两大类: 1. **全新系统的设计过程**:在这个过程中,设计师基于原有的设计基础上进行不断的改进和完善,以创建一个新的系统。重构在此过程中起到了...

    重构:改善既有代码的设计(中文版).

    第7章 在对象之间搬移特性141 7.1 MoveMethod(搬移函数)142 7.2 MoveField(搬移字段)146 7.3 ExtractClass(提炼类)149 7.4 InlineClass(将类内联化)154 7.5 HideDelegate(隐藏“委托关系”)157 7.6 ...

    含分布式电源并网特性的配电网重构策略.pdf

    标题所提及的“含分布式电源并网特性的配电网重构策略”主要探讨的是如何在分布式电源并网后,通过合理的网络结构调整,优化配电网的运行状态。配电网重构旨在改善网络的运行效率,降低网络损耗,提高供电质量和安全...

    NewPrjName.rar_三维 医学_三维 重构_三维重构_三维重构C++_重构

    在IT行业中,尤其是在医疗影像处理领域,三维重构技术扮演着至关重要的角色。"NewPrjName.rar" 是一个与三维医学图像重构相关的项目文件压缩包,它涉及到的是使用C++编程语言来实现这一复杂的计算过程。这个项目的...

Global site tag (gtag.js) - Google Analytics