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

假设我有一个带有生命变量和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的建议你可能想要从配置文件中加载值呢?

有帮助吗?

解决方案

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

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

其他提示

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top