Pergunta

É direito de usar uma constante privado na seguinte situação:

dizer que tenho um jogo com uma variável vidas e uma variável startingLives. No início do jogo que eu definir a variável vidas para igualar a variável startingLives. Isto é como eu normalmente fazê-lo:

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

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

(exemplo de código é ActionScript btw)

A minha pergunta é - isso deve realmente ser:

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

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

StartingLives parece improvável que a mudança em tempo de execução, de modo que eu deveria usar um const, e mudança de volta para uma variável se ele sair para não ser constante?

UPDATE:? O consenso parece ser que este é um bom uso de uma constante, mas que sobre a sugestão de amdfan que você pode querer carregar o valor a partir de um arquivo de configuração

Foi útil?

Solução

Coloque-o em uma constante chamada DEFAULT_STARTING_LIVES, mas também tem uma variável startingLives nomeados. Por enquanto, conjunto startingLives = DEFAULT_STARTING_LIVES. Mais tarde, você pode definir startingLives com base em um valor a partir de um arquivo de configuração. Se o arquivo não foi criado ou não for encontrado, você tem um back-up.

(graças a Rodapés para a expansão na minha resposta inicial.)

Outras dicas

Sim, este é um bom uso de um const. Como regra geral, qualquer "variável", cujo valor não vai mudar em tempo de execução deve ser feita uma constante. Isso permite que o compilador para otimizar esses valores, colocando-os em um (ROM) área separada da memória. (NOTA:. Isso não é uma garantia de que seu compilador irá otimizar, ele apenas torna possível )

Eu acho que uma constante privado é adequado, se não possui exterior uso desse contexto, e resultaria em desordem se tornado público.

Certamente usando uma constante no seu caso é melhor do que um número mágico -. Especialmente se você precisar usá-lo em mais de um lugar

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top