《第7章 通用程序设计》
本章主要讨论Java语言的语法细节。和上一章类似,很多条目都同样适用于其他面向对象的开发语言,尤其是类C语言们。
【第29条】将局部变量的作用域最小化
将局部变量的作用域最小化,可以增加代码的可读性和可维护性,并降低出错的可能性。C语言要求局部变量必须声明在代码块的开始处,出于习惯很多人依然这样做。但是现在应该打破这一习惯了。为了使局部变量的作用域最小化,最好的办法就是在第一次使用的时候再声明之。换句话说,就是在你还没有足够的信息初始化一个变量时,应该推迟它的声明。也就是说几乎每一个局部变量的声明都应该包含一个初始化表达式(有些try-catch的情况下除外)。
for (Iterator i = c.iterator(); i.hasNext();){
doSomething(i.next());
}
几乎总是比
Iterator i = c.iterator();
while (i.hasNext()){
doSomething(i.next());
}
安全。因为后者的 变量i 的生命周期被拉长了,在之后的代码中就有可能发生二义性Bug或“复制 — 粘贴”Bug。
int i = 0;
for (i=0; i<a.length; i++){
....
if (......) {
break;
}
}
int max = i;
这样的代码尽量避免,为了最后一行,必须把 变量i 的定义提前到 for 语句之前,这样扩大了 变量i 的作用域。
接下来不得不提一下AS3语言,在AS3语言中局部变量可以被声明在方法的任意地方,然而它的作用域确是整个方法!也就是说,你甚至可以先使用一个局部变量,然后再声明它!AS3为什么要这样,目前我也不清楚。哪位如果知道,请回复我,谢谢!
【Effective Java 学习笔记】系列连载专题请见: http://tonylian.iteye.com/categories/64208
|