Coding style 何时使用私有常量?

Coding style 何时使用私有常量?,coding-style,constants,private,Coding Style,Constants,Private,在以下情况下使用私有常量是否正确: 假设我有一个包含lives变量和startingLives变量的游戏。在游戏开始时,我将lives变量设置为等于startingLives变量。我通常会这样做: private var lives:int = 0; private var startingLives:int = 3; private function startGame():void { lives = startingLives; } (示例代码是ActionScript btw)

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

假设我有一个包含lives变量和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;
}
StartingLife似乎不太可能在运行时改变,所以我应该使用常量,如果它不是常量,我应该改回变量吗


更新:共识似乎是这是常数的一个很好的用法,但是amdfan的建议是,您可能希望从配置文件加载该值,这又如何呢?

将其放入名为
DEFAULT\u start\u lifes
的常数中,但也有一个名为startinglifes的变量。现在,设置startinglifes=
DEFAULT\u start\u lifes
。稍后,您可以根据配置文件中的值设置StartingLife。如果文件尚未创建或未找到,则您有一个备份


(感谢普林斯对我原始答案的扩展。)

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

我认为私有常量适用于在该上下文之外没有任何用处的情况,如果公开,将导致混乱


当然,在您的情况下使用常量比使用幻数要好——特别是当您需要在多个位置使用它时。

将其设置为常量还可以让任何阅读代码的人确切地知道您对该值的意图。amdfan的观点是,您可能希望使应用程序数据驱动并从配置中加载该值文件?然后,当他决定它需要进入配置文件时,他会将其更改回。对于从文件加载,您可能需要一个变量-但您仍然需要常量-这将是您的默认设置(即startinglifes=default\u start\u lifes;),您应该使用代码标记保留格式。谢谢你的回答!是的,从配置文件加载常量是个好主意。这增加了在不更改代码的情况下配置应用程序的能力。但是,只有当您希望使应用程序的这一方面更具可配置性时,才可以这样做。