将局部变量的作用域最小化,可以增强代码的可读性和可维护性,并降低出错的可能性。
1、最强有力的做法就是在第一次使用变量的地方对其进行声明。
在循环中提供了特殊的机会来将变量的作用域最小化。对于for循环,允许声明循环变量,且它们的作用域被限定在正好需要的范围之内。因此,如果在循环终止之后不再需要循环变量的内容,for循环就优先于while循环。
示例1:
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还在有效的范围之内,代码能通过编译并且不会抛出异常。
示例2:
for(Element e:c){
dosomething(e);
....
}
for(Element e:c2){
dosomething(e);
....
}
这种方式就不存在"剪切-粘贴"错误
2、还有一种做法就是使方法小而集中。如果把两个操作合并到同一个方法中,与其中一个操作相关的局部变量就有可能会出现在执行另一个操作的代码范围之内。为了防止这种情况发生,只要把这个方法分成两个,每个方法各自执行一个操作。