很多时候,我们在设计时总是遇到一些问题,变量是采用局部变量还是成员变量呢?
我个人是有这个想法的:
1、用成员变量的原则是,该变量必需被多个方法共用,并且这些方法间的确需要共用这些变量实现数据共享。典型的是交换问题,我这里举个其它例子,如下
public class FileUtil {
private File file = null;
public void createFile(String fileName) {
file = new File(fileName);
……
}
public void deleteFile() {
file.delete();
……
}
}
2、不要因为每个方法中都用到某个类型的变量,就干脆把它定义为一个成员变量。但是这个变量到了每个方法中都会重新被赋值,没有一个方法需要该变量过去的值,
不存在共享数据的问题,这样写获得的唯一好处就是每个方法里面你可以省略掉一个实例/类型声明罢了,从代码的角度看也不见得简约,一行就多几个字,原本多
少行还是需要多少行。举例,下面的是我不建议的写法:
public class FileUtil {
private File file = null;
public void createFile(String fileName) {
file = new File(fileName);
……
}
public void deleteFile(String fileName) {
file = new File(String fileName);
……
}
}
既然这样,干什么不写成:
public class FileUtil {
public void createFile(String fileName) {
File file = new File(fileName);
……
}
public void deleteFile(String fileName) {
File file = new File(String fileName);
……
}
}
毕竟这样可以使File变量的声明周期更短,提前对无用的垃圾进行回收,当然你也可以采取第一个,然后在每个方法后面写上补上file = null;这只是个人习惯问题罢了。有时候有些人
想说,这个差什么,就是是成员变量,过不久也回收的。的确这样,我不驳斥这个观点,但是很多时候,硬件是足够支撑的,但是很多人还是去做一些优化,很多事情就是这样,有人最求能做
到更好,而且这也是当初SUN设计的初衷吧。
3、还有另外一种情况,有时候如果少了这个成员变量后好像那个方法就要设计得很复杂,但是如果是这样的话,就说明你的那个变量复合第一中情况,这时候就要根据实际情况自己选择了。