首页 > 代码库 > 2.1 搬移函数
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 else17 {18 return m_nDaysOverdrawn * 1.75;19 }20 }21 22 private:23 AccountType m_type;24 int m_nDaysOverdrawn;25 };
【2】搬移函数
1 class AccountType 2 { 3 public: 4 double overdraftCharge(int daysOverdrawn) 5 { 6 if (isPremium()) // 直接调用成员函数 7 { 8 double result = 10; 9 if (daysOverdrawn > 7)10 {11 result += (daysOverdrawn - 7) * 0.85;12 }13 return result;14 }15 else16 {17 return daysOverdrawn * 1.75;18 }19 }20 21 bool isPremium()22 {23 // do something....24 return true;25 }26 };27 28 class Account29 {30 public:31 double bankCharge()32 {33 double result = 4.5;34 if (m_nDaysOverdrawn > 0)35 {36 result += m_type.overdraftCharge(m_nDaysOverdrawn); // 成员变量m_nDaysOverdrawn作为参数传递给目标类37 }38 return result;39 }40 41 private:42 AccountType m_type;43 int m_nDaysOverdrawn;44 };
【3】总结
在程序中,如果有个函数与其所驻之类的另外一个类进行更多交流,调用后者或被后者调用。
在该函数最常引用的类中建立一个有着类似行为的新函数。
将旧函数变成一个单纯的委托函数,或将旧函数完全移除。
Good Good Study, Day Day Up.
顺序 选择 循环 总结
2.1 搬移函数
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。