В версии 1 объявление:
var tempX:int
определяет переменную, которая существует только до тех пор, пока эта итерация цикла for (или for-each) находится в ней. Каждая итерация tempX
определяется с учетом значения из объекта Enemy
, и в конце она остается для сборки мусора.
В версии 2 вы ссылаетесь на две переменные, прикрепленные к объекту Enemy
, на который ссылается временная переменная с именем tempEnemy
.
В обеих версиях ссылка на объект Enemy
, tempEnemy, переназначается объекту Enemy
следующей итерации.
Каждый метод имеет свои преимущества. С точки зрения памяти версия 2, вероятно, лучше, поскольку она изменяет существующую переменную снова и снова, а не создает новую переменную, которая отбрасывается в конце каждой итерации. С другой стороны, версия 1 не требует, чтобы вы определяли oldX
в своих переменных класса, что часто может быть достаточно грязным без таких переменных.
Лучшие практики работы с кодом основаны на (а) работе с другими программистами, которым необходимо уметь читать и понимать код, и (б) выходе из проекта и возвращении к нему позже, когда вам нужно будет уметь читать и понимать собственный код. Для коротких проектов, которыми вы не планируете делиться, подойдет версия 2 (и, возможно, более эффективная с точки зрения памяти), но в любом крупном проекте следует использовать что-то более похожее на версию 1.
Еще одно соображение: собираетесь ли вы использовать эту переменную где-либо, кроме функции, в которой она определена (установлена)? Если нет, вам не нужно хранить его в объекте, который снова указывает на версию 1.
person
Martin
schedule
12.11.2011