5.3.4 变量的使用规则

5.3.4 变量的使用规则

定义一个成员变量时,成员变量将被放置到堆内存中,成员变量的作用域将扩大到类存在范围或者对象存在范围,这种范围的扩大有两个害处。

  1. 增大了变量的生存时间,这将导致更大的内存开销。
  2. 扩大了变量的作用域,这不利于提高程序的内聚性。

循环变量应该在代码块内定义

对于一个循环变量而言,只需要它在循环体内有效,因此只需要把这个变量放在循环体内(也就是在代码块内定义),从而保证这个变量的作用域仅在该代码块内。
如果有如下几种情形,则应该考虑使用成员变量。

1. 用于描述某个类或某个对象的固有信息的变量

如果需要定义的变量是用于描述某个类或某个对象的固有信息的,这种变量应该定义为成员变量。

  • 如果这种信息对这个类的所有实例完全相同,或者说它是类相关的,例如人类的眼睛数量,目前所有人的眼睛数量都是2只,这种类相关的信息,应该定义成类变量;
  • 如果这种信息是实例相关的,例如人的身高、体重等,每个人实例的身高、体重可能互不相同,这种信息是实例相关的,应该定义成实例变量。

2. 用于保存某个类或某个实例状态信息的变量

如果在某个类中需要以一个变量来保存该类或者实例运行时的状态信息,例如上面五子棋程序中的棋盘数组,它用以保存五子棋实例运行时的状态信息。这种用于保存某个类或某个实例状态信息的变量通常应该使用成员变量

3. 需要在某个类的多个方法之间进行共享的信息

如果某个信息需要在某个类的多个方法之间进行共享,则这个信息应该使用成员变量来保存。

尽量使用局部变量 尽量缩小局部变量的作用范围

即使在程序中使用局部变量,也应该尽可能地缩小局部变量的作用范围,局部变量的作用范围越小,它在内存里停留的时间就越短,程序运行性能就越好。因此,能用代码块局部变量的地方,就坚决不要使用方法局部变量