Domanda

È corretto utilizzare una costante privata nella seguente situazione:

Supponiamo che io abbia un gioco con una variabile di vita e una variabile di partenza. All'inizio del gioco ho impostato la variabile vite in modo che sia uguale alla variabile startingLives. Ecco come lo farei normalmente:

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

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

(il codice di esempio è ActionScript tra l'altro)

La mia domanda è - dovrebbe davvero essere:

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

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

StartingLives sembra improbabile che cambi in fase di esecuzione, quindi dovrei usare una const e tornare a una variabile se risulta non essere costante?

AGGIORNAMENTO: Il consenso sembra essere che questo è un buon uso di una costante, ma che dire del suggerimento di amdfan che potresti voler caricare il valore da un file di configurazione?

È stato utile?

Soluzione

Inseriscilo in una costante denominata DEFAULT_STARTING_LIVES , ma disponi anche di una variabile denominata startingLives. Per ora, imposta startingLives = DEFAULT_STARTING_LIVES . Successivamente, puoi impostare startingLives in base a un valore da un file di configurazione. Se il file non è stato creato o non è stato trovato, hai un backup.

(grazie a Plinth per l'espansione della mia risposta originale.)

Altri suggerimenti

Sì, questo è un buon uso di una const. Come regola generale, qualsiasi "variabile" il cui valore non cambierà in fase di esecuzione dovrebbe essere una costante. Ciò consente al compilatore di ottimizzare quei valori inserendoli in un'area di memoria (ROM) separata. (NOTA: non è una garanzia che il tuo compilatore ottimizzerà, lo rende solo possibile .)

Penso che una costante privata sia appropriata laddove non sia utile al di fuori di quel contesto e, se resa pubblica, comporterebbe disordine.

Sicuramente usare una costante nel tuo caso è meglio di un numero magico, specialmente se devi usarlo in più di un posto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top