将局部变量的作用域最小化

1.要使局部变量的作用域最小化,最有力的方法及时在第一次使用的它的地方声明

2.几乎每个局部变量的声明都应该包含一个初始化表达式,如果没有足够的信息来对一个变量进行有意义的初始化,就应该推迟这个变量,直到可以初始化为止。例外情况try-catch语句

int age;//不能被有意义的初始化
try{
 age=25;
 ......
}catch(exception e){
 ...
}
age....//try语句后还需要使用

3.1.循环中提供了特殊的机会来将变量的作用域最小化,如果在循环终止之后不再需要循环变量的内容,for循环就优先于while循环。例子:

Iterator<Element> i=c.iterator();
while(i.hasNext()){
  dosomething(i.next());
  ......
}

Iterator<Element> i2=c.iterator();
while(i.hasNext()){
  dosomething(i2.next());
  ......
}
//包含了一个"剪切-粘贴"错误:本来是要初始化一个新的循环变量i2,确使用了旧的循环变量i,并且i还在有效的范围之内,代码能通过编译并且不会抛出异常.
for(Element e:c){
 dosomething(e);
 ....
}

for(Element e:c2){
 dosomething(e);
 ....
}
//这种方式就不存在"剪切-粘贴"错误
3.2
for(int i=0,n=expensiveComption();i<n;i++){
  dosomething(i);
}
n被用来保存第一个变量的极限值,从而避免在每次迭代中执行冗余计算的开销,通常循环中涉及到方法调用,它可以保证每次迭代中都会返回同样的结果,就应该使用这种方法

4.使方法小而集中

每个方法执行最简单的一个操作,这样就可以保证一个操作的局部变量不会暴露给另外一个操作


//effective java 总结..........

你可能感兴趣的:(将局部变量的作用域最小化)