何时使用私有常量?

时间:2008-10-20 15:14:21

标签: coding-style const private constants

在以下情况下使用私有常量是否正确:

假设我有一个带有生命变量和startingLives变量的游戏。在游戏开始时,我将lives变量设置为等于startingLives变量。这就是我通常会这样做的方式:

private var lives:int = 0;
private var startingLives:int = 3;

private function startGame():void
{
   lives = startingLives;
}

(示例代码是ActionScript btw)

我的问题是 - 这真的应该是:

private var lives:int = 0;
private const STARTING_LIVES:int = 3;

private function startGame():void
{
  lives = STARTING_LIVES;
}

StartingLives似乎不太可能在运行时改变,所以我应该使用const,如果事实证明不是常量则更改回变量?

更新:共识似乎是这是一个很好的使用常量,但amdfan的建议你可能想要从配置文件中加载值呢?

3 个答案:

答案 0 :(得分:6)

是的,这是一个很好的使用const。作为一般经验法则,任何其值在运行时不会改变的“变量”应该是常量。这使编译器能够通过将它们放在单独的(ROM)内存区域来优化这些值。 (注意:这不能保证您的编译器会优化,只是让它可能。)

答案 1 :(得分:4)

将它放在名为DEFAULT_STARTING_LIVES的常量中,但也有一个名为startingLives的变量。目前,请设置startingLives = DEFAULT_STARTING_LIVES。稍后,您可以根据配置文件中的值设置startingLives。如果文件尚未创建或未找到,则备份。

(感谢Plinth扩展我的原始答案。)

答案 2 :(得分:2)

我认为私有常量适用于在该上下文之外没有用处的情况,并且如果公开则会导致混乱。

当然,在你的情况下使用常量优于神奇的数字 - 特别是如果你需要在多个地方使用它。