重构手法之重新组织函数【4】

返回总目录

重构手法之重新组织函数【4】,重构手法函数

返回总目录

本小节目录

  • Split Temporary Variable(分解临时变量)
  • Remove Assignments to Parameters(移除对参数的赋值)

本小节目录

6 Split Temporary Variable(分解临时变量)

概要

你的程序有某个临时变量被赋值超过一次,它既不是循环变量,也不被用于收集计算结果。

针对每次赋值,创造一个独立、对应的临时变量。

6 Split Temporary Variable(分解临时变量)

动机

临时变量有各种不同的用途。

1、循环变量;

2、结果收集变量;

3、保存一段冗长代码的运算结果,便于稍后使用。

其中第三种情况的临时变量应该只被赋值一次。如果它们被赋值超过一次,就意味着它们在函数中承担了一个以上的责任。如果临时变量承担了多个责任,它就应该被分解为多个临时变量,每个变量只承担一个责任。同一个临时变量承担两件不同的事情,会令代码阅读者糊涂。

概要

你的程序有某个临时变量被赋值超过一次,它既不是循环变量,也不被用于收集计算结果。

针对每次赋值,创造一个独立、对应的临时变量。

范例

double GetTotalCost()
{
    double result = 0;

    double money = _chickMoney   _chipMoney;

    result  = money;

    money = _cocoaMoney   _coffeeMoney;

    result  = money;

    return result;
}

可以看到在这个范例中,临时变量money被赋值两次。并且它没有做到累积结果的作用,累积结果给了result。所以,我们需要做重构,让这个变量的意图变的更加明确。

所以我们第一步,寻找这个变量第一次声明的地方,并且将他改名,然后修改在第二次赋值之前的所有引用点,并且在第二次赋值处进行重新声明:

double GetTotalCost()
{
    double result = 0;

    double mealMoney = _chickMoney   _chipMoney;

    result  = mealMoney ;

    double money = _cocoaMoney   _coffeeMoney;

    result  = money;

    return result;
}

现在,新的临时变量只承担原先money的第一个责任。而且我们在原先money变量第二次被赋值处重新声明了money。然后,继续处理money临时变量的第二次赋值。

double GetTotalCost()
{
    double result = 0;

    double mealMoney = _chickMoney   _chipMoney;

    result  = mealMoney ;

    double drinkMoney = _cocoaMoney   _coffeeMoney;

    result  = drinkMoney ;

    return result;
}

可以看到,我们完成了变量的重构之后,函数对于临时变量之前的money的困惑已经没有了,整体因为变量名字的本身使得逻辑更加清晰。

如果在这里你的代码还是比较复杂的话,可以尽情使用其他的重构手法。

动机

临时变量有各种不同的用途。

1、循环变量;

2、结果收集变量;

3、保存一段冗长代码的运算结果,便于稍后使用。

其中第三种情况的临时变量应该只被赋值一次。如果它们被赋值超过一次,就意味着它们在函数中承担了一个以上的责任。如果临时变量承担了多个责任,它就应该被分解为多个临时变量,每个变量只承担一个责任。同一个临时变量承担两件不同的事情,会令代码阅读者糊涂。

 小结

这个重构手法的重点在于:临时变量不是用于循环变量和结果收集,但却被赋值超过两次,那就对它进行分解,使其每次只承担一个责任。

范例

double GetTotalCost()
{
    double result = 0;

    double money = _chickMoney   _chipMoney;

    result  = money;

    money = _cocoaMoney   _coffeeMoney;

    result  = money;

    return result;
}

美洲杯赌球,可以看到在这个范例中,临时变量money被赋值两次。并且它没有做到累积结果的作用,累积结果给了result。所以,我们需要做重构,让这个变量的意图变的更加明确。

所以我们第一步,寻找这个变量第一次声明的地方,并且将他改名,然后修改在第二次赋值之前的所有引用点,并且在第二次赋值处进行重新声明:

double GetTotalCost()
{
    double result = 0;

    double mealMoney = _chickMoney   _chipMoney;

    result  = mealMoney ;

    double money = _cocoaMoney   _coffeeMoney;

    result  = money;

    return result;
}

现在,新的临时变量只承担原先money的第一个责任。而且我们在原先money变量第二次被赋值处重新声明了money。然后,继续处理money临时变量的第二次赋值。

double GetTotalCost()
{
    double result = 0;

    double mealMoney = _chickMoney   _chipMoney;

    result  = mealMoney ;

    double drinkMoney = _cocoaMoney   _coffeeMoney;

    result  = drinkMoney ;

    return result;
}

可以看到,我们完成了变量的重构之后,函数对于临时变量之前的money的困惑已经没有了,整体因为变量名字的本身使得逻辑更加清晰。

如果在这里你的代码还是比较复杂的话,可以尽情使用其他的重构手法。

7 Remove Assignments to Parameters(移除对参数的赋值)

本文由美洲杯赌球发布于计算机教程,转载请注明出处:重构手法之重新组织函数【4】

TAG标签: 美洲杯赌球
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。