调用访问器方法的好习惯?

时间:2014-10-09 17:27:36

标签: java

如果这个问题很愚蠢,请原谅我......在编程时我是新手。我感到困惑的一件事是,每当我调用一个获取某些值的方法或保留本地副本并更新它时,我是否应该实例化一个新变量。

为了说明,假设我有一个机器人导航迷宫。机器人驾驶员操作机器人并且必须使机器人的坐标执行某些动作,例如感知障碍物。

public class RoboDriver {
   public void senseObstacle() {
     int[] position = robot.getPosition();
     ...
   }
}

public class RoboDriver {
   int[] robotPositionCopy;
   public void senseObstacle() {
     this.robotPositionCopy = robot.getPosition();
     ...
   }
}

机器人对象中的位置坐标始终是最新的。因此,如果我想获得更新的位置,这两个例子中的哪一个更好,为什么?或者它没有太大的区别?

1 个答案:

答案 0 :(得分:2)

一个人不会实例化一个本地变量,而你的说法让我觉得你可能会认为这是一个代价。局部变量是完全免费的:它们只是给予内存位置的名称,它们在方法的堆栈帧上无论如何

与此相反,你的第二个例子声明了一个实例变量,并且确实需要付出代价:你的类的每个实例都必须为它保留堆上的内存,即使只在执行方法时使用它。

所以,我认为这个建议是无关紧要的:不要声明实例变量,除非你需要它们来保存长期存在的对象状态。