第六章重新组织函数
提炼函数
解决过长函数的方法第一条
- 将函数中的一段代码放进一个独立的函数当中,并且让函数的名称解释该函数的用途
- 如果函数的力度足够小,那么他就会达到很大的复用率
- 即使想要提炼的函数非常非常短,哪怕函数当中只有一句话,但是如果他能达到很高的复用率,并且它的函数命名可以阐述清楚它的作用我们就应该提炼这个函数
- 提炼函数的过程当中可能会涉及到形参,这个行参有可能是由原函数传递给新的提炼函数的一个变量,也有可能仅仅只存在于新建的函数当中
- 那么比较复杂的一定是原函数传递了一个变量给新建的这个函数,并且新建的这个函数对传递过来的形参进行了操作或者赋值
- 首先要知道java是按值传递的,如果一个值作为形参传入这个函数,我们再对当前的这个数值进行操作,再将当前的数值返回给调用者。其实这个数值在原函数调用者那里是没有变化的,如果我们再次去打印,当前传递进去的那个数值会发现还是未经变化的
- 这就是java值传递的情况,因为局部变量传递到另一个函数进行赋值操作的时候,两者并不共享同一对象。
- 所以在切分过长函数,提炼函数的时候,如果涉及到原函数,将会传递给新的提炼出来的函数,一个局部变量,并且新的函数会对局部变量进行赋值操作,那么我们就应该在新的提炼出来的函数当中新建一个临时变量,承接参数局部变量,并对新的职进行操作使人能够看清,JAVA是按值操作的,并不会改变传递过来的这个变量
以下为新建函数的返回值还会被原函数修改
public int discount(int x){
int var=x;
var-=10;
return var;
}
以上面这个函数为例,最好不要将临时的复制的这个变量声明为var 最好是声明result
递过来的形参最好声明为init
2. 说到临时变量 虽然是在当前函数内声明的临时变量 比如x=a+b 但是如果该临时变量不止在当前函数用到 在其他函数也用到了 我们就可以使用 查询代替
3.局部变量只能赋值一次 多次赋值就再写新的局部变量
4.