2.2 搬移字段

【1】源代码

 1 // 重构前
 2 class Account
 3 {
 4 public:
 5     double interestForAmount_days(double amount, int days)
 6     {
 7         return m_dInterestRate * amount * days / 365;
 8     }
 9
10 private:
11     AccountType m_type;
12     double m_dInterestRate; // 利率随类型变化,所以准备搬移该字段
13 };

【2】搬移字段

// 重构后
class Account
{
public:
    double interestForAmount_days(double amount, int days)
    {
        return m_type.getInterestRate() * amount * days / 365;
    }

private:
    AccountType m_type;
};

class AccountType
{
public:
    double getInterestRate()
    {
        return m_dInterestRate;
    }
    void setInterestRete(double dValue)
    {
        m_dInterestRate = dValue;
    }

private:
    double m_dInterestRate; // 利率随类型变化,所以准备搬移该字段
};

【3】总结

程序中,某个字段被其所驻类之外的另一个类更多的用到。在目标类新建一个字段,修改源字段的所有用户,令他们改用新字段。

如果发现,对于一个字段,在其所驻类之外的另一个类中有更多函数使用了它,我就会考虑搬移这个字段。

Good Good Study, Day Day Up.

顺序 选择 循环 总结

时间: 2024-10-13 10:50:56

2.2 搬移字段的相关文章

重构笔记——搬移字段

本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/42780243         在上一篇文章中介绍了"搬移函数".本文将介绍"搬移字段"这种重构手法.         下面让我们来学习这种重构手法吧. 开门见山         发现:程序中某个字段被其所驻类之外的另一个类更多地用到. 解决:在目标类新建一个字段,修改原字段的所有用户,令它们改用新字段. 动机 在类之间移动状态

重构笔记——搬移函数

本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/42679983         我们都知道,类往往因为承担过多的责任而变得臃肿不堪.这种情况下,一般会使用"提炼类"这种手法将一部分责任分离出去.如果一个类变得"不负责任",一般会使用"内联类"这种手法将它融入另一个类.如果一个类使用了另一个类,一般会运用"隐藏委托关系"手法将这种关系隐藏

重构摘要7_在对象之间搬移特性

<重构-改善既有代码的设计>Martin Fowler 摘要: 第七章 在对象之间搬移特性 Move Method 搬移函数 你的程序中,有个函数与其所驻类之外的另一个类进行更多交流:调用后者,或被后者调用 在该函数最常引用的类中建立一个有着类似行为的新函数.将旧函数变成一个单纯的委托函数,或者将旧函数完全移除. Move Field 搬移字段 某个字段被其所驻类之外的另一个类更多地用到. 如果我需要对类做许多处理,保持小步前进是有帮助的. Extract Class 提炼类 某个类做了应该由

【Java重构系列】重构31式之搬移方法

重构第二式:搬移方法 (Refactoring 2: Move Method) 毋容置疑,搬移方法(Move Method)应该是最常用的重构手段之一,正因为太常用而且较为简单,以至于很多人并不认为它是一种很有价值的重构,但事实并非如此,在最初的代码诞生之后,有些方法可能会被放在一些不合适的地方,例如,一个方法被其他类使用比在它所在的类中的使用还要频繁或者一个方法本身就不应该放在某个类中时,我们应该考虑将它移到更合适的地方.搬移方法,顾名思义就是将方法搬移至合适的位置,如将方法搬移到更频繁地使用

第3章 在对象之间搬移特性(2):提炼类、类的内联化

3. 提炼类(Extract Class) 3.1 动机 (1)某个类做了应该由两个类做的事,可以将相关字段和函数从旧类搬移到新类. (2)当某些特性需要以一种方式来子类化,另外一些特性则需要以另一种方式子类化,这就意味着需要分解原来的类. 3.2 做法 (1)决定如何分解类所负的责任. (2)建立一个新类,用以表现从旧类中分离出来的责任.如果旧剩下的责任与旧类名称不符,也可以为旧类更名. (3)建立“从旧类访问新类”的连接关系.有时可能需要一个双向连接,但是在真正需要它之前,不要建新“从新类通

学习重构(3)-在对象之间搬移特性

1. Move Method(搬移函数) 在该函数最常用的勒种简历一个有着类似行为的新函数,将就函数变成一个单纯的委托函数,或是将就函数完全移除. 应用场景:搬移函数是重构理论的支柱,如果一个类有太多行为,或者一个类与另一个类有太多合作而形成高度耦合,我们就需要搬移函数.通过这种手段,我们可以使系统中的类更简单,这些类最终也将更干净利落的实现系统交付的任务. 示例: class A... void a1()... void a2() { B b = new B(); b.b1(); b.b2()

智能视频监控中的遗留物或搬移物检测

智能视频监控中的遗留物或搬移物检测 [email protected] http://blog.csdn.net/kezunhai 遗留物或搬移物检测是智能视频监控中的一项基本功能,基本上是智能视频监控领域的必备功能.然而,在实际应用中漏报或误判率依然很高.常见的遗留物或搬移物检测算法主要分为两类,一类是先检测,再根据检测前景在场景中的停留时间来判定是否为遗留物或搬移物:另一类,则是先检测,然后采用跟踪方法来判断是否为遗留物或搬移物,该类方法由于目标跟踪本身存在的难点,在实际应用的场景受到了很大

2.1 搬移函数

[1]源代码 1 // 重构前 2 class Account 3 { 4 public: 5 double overdraftCharge() 6 { 7 if (m_type.isPremium()) 8 { 9 double result = 10; 10 if (m_nDaysOverdrawn > 7) 11 { 12 result += (m_nDaysOverdrawn - 7) * 0.85; 13 } 14 return result; 15 } 16 else 17 { 18

[国嵌攻略][042][代码搬移不可少]

ARM启动流程 1.处理器内部RAM的大小有限,不能拷贝全部的Bootloader,所以需要用内部RAM BL1的代码来拷贝BL2的代码到内存中.规范的方式的代码搬移的起点是flash,终点是内存.但是由于nand flash还没有初始化,所以先从内部ram中把BL1搬移到内存中.等到初始化nand flash后在采用规范的代码搬移方式. 2.起点SRAM地址:2440 0x00000000,6410 0x0C000000,210 0xD0020000 3.链接起始地址决定了程序第一行代码在内存