Вопрос

Правильно ли использовать закрытую константу в следующей ситуации:

Скажем, у меня есть игра с переменной жизненного цикла и переменной initialLives. В начале игры я установил переменную Life равной переменной initialLives. Вот как я обычно это делаю:

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, что вы можете захотеть загрузить значение из файла конфигурации?

Это было полезно?

Решение

Поместите его в константу с именем DEFAULT_STARTING_LIVES , но также включите переменную с именем initialLives. На данный момент установите startLives = DEFAULT_STARTING_LIVES . Позже вы можете установить startLives на основе значения из файла конфигурации. Если файл не был создан или не найден, у вас есть резервная копия.

(спасибо Плинту за расширение моего первоначального ответа.)

Другие советы

Да, это хорошее использование const. Как правило, любая «переменная» значение которого не изменится во время выполнения, должно быть константой. Это позволяет компилятору оптимизировать эти значения, помещая их в отдельную область памяти (ПЗУ). (ПРИМЕЧАНИЕ. Это не гарантия того, что ваш компилятор будет оптимизирован, это просто делает его возможным .)

Я думаю, что частная константа подходит там, где она не используется за пределами этого контекста, и может привести к беспорядку, если она станет публичной.

Конечно, использование константы в вашем случае лучше, чем магическое число, особенно если вам нужно использовать его более чем в одном месте.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top