3

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

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

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

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

(示例代码是 ActionScript 顺便说一句)

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

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

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

StartingLives 似乎不太可能在运行时改变,所以我应该使用 const,如果它不是恒定的,则改回变量?

更新:大家一致认为这是对常量的一种很好的使用,但是 amdfan 建议您可能希望从配置文件中加载值呢?

4

3 回答 3

6

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

于 2008-10-20T15:16:32.857 回答
4

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

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

于 2008-10-20T15:16:01.173 回答
2

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

当然,在您的情况下使用常量比使用幻数更好 - 特别是如果您需要在多个地方使用它。

于 2008-10-20T15:16:56.770 回答