Java之路(六) 局部变量作用域最小化

将局部变量的作用域最小化,可以增强代码的可读性和可维护性,并降低出错的可能性。

将局部变量的作用域最小化的方法有:

方法1:在第一次使用某个局部变量的地方进行声明。

a.Java可以在任何可以出现语句的地方声明变量。

这条规则可以让我们在需要的地方声明变量,从而缩小作用域,如果没有这个前提,后面的一切都不成立了。

b.过早的声明局部变量不仅会是它的作用域过早的扩展,而且结束的过于晚了。

要正确理解这句话。局部变量的作用域从它被声明的点开始扩展,一直到外围块的结束处。见下图:

如果变量是在“使用它的块”之外被声明的,当程序退出该块之后,该变量仍是可见的。

方法2:几乎每个局部变量的声明都应该包含一个初始化表达式。如果你还没有足够的信息来对一个变量进行有意义的初始化,就应该推迟这个声明,直到可以初始化为止。

这条规则有个例外的情况与try-catch语句有关。如果一个变量被一个方法初始化,而且这个方法可能抛出一个受检的异常(checked exception),该变量就必须在try块的内部被初始化。如果变量的值必须在try块的外部被使用到,它就必须在try块之前被声明,但是在try之前,它还不能被“有意义地初始化”。

方法3:for循环,都允许声明循环变量,它们的总用域被限定在正好需要的范围之内。

如果循环终止之后不再需要循环变量的内容,for循环优先于while循环。比如下面的代码,e的有效范围只限定在这个for循环内,出了这个for循环就不再有效。

1 for(Element e : c){
2   doSomething(e);
3 }

方法4:使用另一个局部变量来限制一个局部变量的迭代范围。

比如下面的代码,变量n保存第一个变量i的极限值,避免在每次迭代中执行冗余计算的开销。

1 for(int i =0,n = expensiveComputation(); i < n; i ++){
2   doSomething(i);
3 }

方法5:使方法小而集中。

如果把两个操作合并到一个方法中,与其中的一个相关的局部变量就有可能会出现执行另一个操作的代码范围之内。为防止这种事情的发生,只要把这个方法分成两个,每个方法各执行一个操作。

时间: 2024-10-06 15:23:29

Java之路(六) 局部变量作用域最小化的相关文章

第八章:通用程序设计。ITEM45:将局部变量的作用域最小化。

1.将局部变量的作用域最小化,可以增强代码的可读性和可维护性,并降低出错的可能性.在 C 语言中要求局部变量必须在一个代码块的开头处进行声明,出于习惯,有些开发者延续了这样的做法. 这个习惯需要改正,Java 提供了你在代码块的任何地方声明变量的语法支持. 2."要使局部变量的作用域最小化,最有力的实践就是在第一次使用它的地方声明".如果过早的声明,开发者就有可能在真正使用该变量的时候忘记了它的类型或者初始值了,而且也会带来代码块内变量名的名字污染问题,由此引发的 Bug,往往是令人极

为什么要将局部变量的作用域最小化?

嗨,本篇文章来说说 Java 的一个小细节:为什么要将局部变量的作用域最小化? 明人不说暗话啊.这篇文章的灵感来源于<Effective Java>,这本书我买了有好长好长一段时间了,书页都已经泛黄,烙下了时间的痕迹,但我仍然还没有把这本书读完.说来惭愧啊. 为什么呢?总感觉这本书的中文翻译有点拙劣,读起来烦闷枯燥.明明感觉作者说得非常有道理,但就是提不起半点兴致. (说完这句话,总觉得有点对不住这本书的译者,毕竟吐槽容易,分享难啊.) 为什么要说这些废话呢,因为怕大家觉得这是不值一提的细节,

第45条:将局部变量的作用域最小化

将局部变量的作用域最小化,可以增强个代码的可读性和可维护性,并降低出错的可能性. 方法: 1.在第一次使用它的地方声明.如果变量在使用之前声明,对于试图理解程序功能的读者来说,多了一个分散注意力的因素,等到用到该变量的时候,可能已经记不起变量的类型或者初始值了. 2.几乎每个局部变量的声明都应该包含一个初始化表达式.如果还没有足够的信息对一个变量进行有意义的初始化,就应该推迟这个声明,直到可以初始化为止.例外,try-catch语句,如果一个变量被一个方法初始化,而这个方法有可能抛出一个受检异常

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

将局部变量的作用域最小化,可以增强代码的可读性和可维护性,并降低出错的可能性. 早期的程序设计语言要求局部变量必须在代码块的开头处声明,很多程序员保持这种习惯,但这是不好的.最好的方式就是在初次使用它的地方进行声明,否则等到运用的时候可能已经记不起这个变量名称,或者类型,这对于开发来说,或者阅读代码的人来说都是一件分散注意力的因素. 而如果在开头处声明,通常意味着它可以被应用到多个域当中,那你就可能在别的域中误用这个变量,尤其是在现今代码拷贝成习惯的开发日常,而从编译角度讲,代码是没有错误的,所

第四十五条:将局部变量的作用域最小化

将局部变量的作用域最小化,可以增强代码的可读性和可维护性,并降低出错的可能性. 要使局部变量的作用域最小化,最有力的方法就是在第一次使用它的地方声明. 如果过早的对变量进行声明,首先会造成混乱,对于试图理解程序功能的读者来说,这又多了一种只会分散他们注意力的因素.等到 用该变量的时候,读者可能已经记不起该变量的类型或者初始值了.其次,过早的声明局部变量不仅会使它的作用域过早的扩展,而且 结束得也过于晚了.局部变量的作用域从它被声明的点开始扩展,一直到外围块的结束处.如果变量是在"使用它的块&qu

java fastjson 设置全局输出name最小化

1.通过自定义Filter实现 https://github.com/alibaba/fastjson/wiki/SerializeFilter public class JackJsonLowCaseFilter implements NameFilter { public JackJsonLowCaseFilter() { } @Override public String process(Object source, String name, Object value) { if (nam

《Effective Java 第二版》学习笔记 第13条 使类和成员的可访问性最小化

第四章 类和接口 第13条 使类和成员的可访问性最小化 1.设计良好的模块会隐藏所有的实现细节,把它的API与实现清晰的隔离开来,模块之间只通过它们的API进行通信,一个模块不需要知道其他模块的内部工作情况:即信息隐藏或封装,是软件设计的基本原则之一. 2.Java提供了许多机制来协助信息隐藏.访问控制(access control)机制决定了类.接口和成员的可访问性(accessibility). 3.第一规则:尽可能地使每个类或者成员不被外界访问.或者说在保证功能的情况下,使用最小的访问级别

Effective Java 第三版——15. 使类和成员的可访问性最小化

Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将近8年的时间,但随着Java 6,7,8,甚至9的发布,Java语言发生了深刻的变化. 在这里第一时间翻译成中文版.供大家学习分享之用. 类和接口是Java编程语言的核心.它们是抽象的基本单位.该语言提供了许多强大的元素,可以使用它们来设计类和接口.本章包含指导原则,帮助你充分利用这些元素,使你的类和接口是可

《Effective Java》读书笔记 - 最小化类的可变性

Item 15 最小化类的可变性 effective java 如何做到让类不可变? 不提供改变对象状态的方法.(mutators) 确保类不会被继承,即用final来限定类. 让所有的域(field)为final. 让所有的域private. 确保所有对可变组件的互斥访问(Ensure exclusive access to any mutable components) 例子: public final class Complex{ //final class private final d