在以下情况下使用私有常量是否正确:
假设我有一个带有生命变量和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的建议你可能想要从配置文件中加载值呢?
答案 0 :(得分:6)
是的,这是一个很好的使用const。作为一般经验法则,任何其值在运行时不会改变的“变量”应该是常量。这使编译器能够通过将它们放在单独的(ROM)内存区域来优化这些值。 (注意:这不能保证您的编译器会优化,只是让它可能。)
答案 1 :(得分:4)
将它放在名为DEFAULT_STARTING_LIVES
的常量中,但也有一个名为startingLives的变量。目前,请设置startingLives = DEFAULT_STARTING_LIVES
。稍后,您可以根据配置文件中的值设置startingLives。如果文件尚未创建或未找到,则备份。
(感谢Plinth扩展我的原始答案。)
答案 2 :(得分:2)
我认为私有常量适用于在该上下文之外没有用处的情况,并且如果公开则会导致混乱。
当然,在你的情况下使用常量优于神奇的数字 - 特别是如果你需要在多个地方使用它。