временные переменные - PullRequest
       18

временные переменные

0 голосов
/ 12 ноября 2011

Я хотел бы знать, в чем разница, когда я пишу временную переменную, подобную этой (это только примеры):

version1

for each tempEnemy in enemyManager.enemies {
var tempX:int = tempEnemy.x;
}

или это:

version2

for each tempEnemy in enemyManager.enemies {
tempEnemy.oldX = tempEnemy.x;
}

Что не так и правильно?В настоящее время я пишу это как версию 2, и я не уверен, стоит ли менять ее на версию 1. Может кто-нибудь помочь мне с этим, пожалуйста?Я знаю, что большинство разработчиков пишут как версия 1, но я немного сбит с толку, потому что я совершенно не знаю о версии 1. Если я использую версию 1, означает ли это, что мое значение хранится явно во временной переменной, которая очищается в каждом цикле?

Ответы [ 2 ]

2 голосов
/ 12 ноября 2011

Кроме того ... Добавление: variableType (int, String, Number и т. Д.) Помогает в подсказках и отладке кода.

1 голос
/ 12 ноября 2011

В версии 1 объявление:

var tempX:int

определяет переменную, которая длится только до той итерации цикла for (или for-each), в которой она находится. Каждая итерация tempX определена,получает значение из объекта Enemy и в конце оно оставляется для сборки мусора.

В версии 2 вы ссылаетесь на две переменные, прикрепленные к объекту Enemy, на который ссылается временная переменная с именем tempEnemy.

В обеих версиях ссылка на объект Enemy, tempEnemy, переназначается на объект Enemy следующей итерации.

Каждый метод имеет свои преимущества.С точки зрения памяти, версия 2, вероятно, лучше, поскольку она изменяет существующую переменную снова и снова, а не создает новую переменную, которая отбрасывается в конце каждой итерации.С другой стороны, версия 1 не требует, чтобы вы определяли oldX в своих переменных класса, что часто может привести к грязному виду без таких переменных.

Лучшие практики с кодом основаны на (а) работать с другими программистами, которым необходимо уметь читать и понимать код, и (б) выходить из проекта и возвращаться к нему позже, где вам необходимо уметь читать и понимать свой собственный код.Для коротких проектов, которыми вы не планируете делиться, версия 2 в порядке (и, вероятно, более экономно использует память), но любой крупный проект должен использовать что-то более похожее на версию 1.

Другое соображение: собираетесь ли выиспользовать эту переменную в любом месте, кроме функции, где она определена (установлена)?Если нет, вам не нужно хранить его в объекте, который снова указывает на версию 1.

...