代码重构——1-提炼函数

Posted by GershonHold on 10-15,2021

1.提炼函数核心:任何不被修改的变量都可以被当作参数传入新的函数,会被修改的变量可以作为新函数的返回值

2.提炼函数的缘由

将长长的函数切开,将较小块的代码移到更合适的类

因为这样能降低代码重复量

降低代码重复量就有利于撰写新的函数

3.提炼函数步骤

找出需要重构的函数的局部变量和参数
↓
分为不会被改变的和会被改变的
↓
任何不被修改的变量都可以被当作参数传入新的函数,会被修改的变量可以作为新函数的返回值
↓
分出来之后,如果不喜欢原来一些变量的名字,现在正是修改的时机

4.代码

以书中租借录像带代码为例

原代码:这段代码会成为一大段代码里面的疑团

switch(each.getMovie().getPriceCode){
    case 1:
    thisAmount+=2;break;
    case 2:
    thisAmount+=3;break;
    }
}

重构后:

private double amountFor(Rental each){
    
    double thisAmount=0;
    
    case 1:
    thisAmount+=2;break;
    case 2:
    thisAmount+=3;break;
    }
    
    return thisAmount;
}

在这里面,each为不会改变的变量,作为Rental型变量输入

而thisAmount是会变的变量,因为只有它一个,所以作为返回值返回

如果有多个会改变的,考虑使用其它方法返回,比如List等