【第29条】将局部变量的作用域最小化

论坛 期权论坛 编程之家     
选择匿名的用户   2021-5-21 16:35   11   0

《第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

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP