一時変数

私は、このような一時変数を書くときの違いを知りたいと思います(これは単なる例です):

バージョン1

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

またはこれ:

バージョン2

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

何が間違っていますか?現在、バージョン2のように書いていますが、バージョン1に変更する必要があるか分かりません。ほとんどの開発者がバージョン1のように書くのは分かりますが、私はバージョン1について全く知らないのでちょっと混乱しています。バージョン1を使用すると、私の値が毎回クリアされる一時変数に明示的に格納されますか?

0
追加された
ビュー: 1

2 答え

また... :variableType(int、String、Numberなど)を追加すると、コードのヒントとデバッグに役立ちます。

2
追加された

バージョン1では、宣言は次のとおりです。

var tempX:int

Enemy の値を指定すると、 tempX の各反復が定義されます。最後にガベージコレクションの対象となります。

バージョン2では、 tempEnemy という一時変数によって参照される Enemy オブジェクトにアタッチされた2つの変数を参照します。

どちらのバージョンでも、 Enemy オブジェクトへの参照、tempEnemyは次の反復の Enemy オブジェクトに割り当てられます。

それぞれの方法には利点があります。メモリの観点からは、各反復の終わりに破棄される新しい変数を作成するのではなく、既存の変数を繰り返し変更するため、バージョン2の方が優れている可能性があります。一方、バージョン1では、クラス変数に oldX を定義する必要はありません。

コードのベストプラクティスは、(a)コードを読み、理解できるようにする必要がある他のプログラマーと協力し、(b)プロジェクトを終了し、後でそれに戻り、できるようにする必要があるあなた自身のコードを読んで理解する。短いプロジェクトでは、共有を計画していませんが、バージョン2は大丈夫です(おそらくメモリー効率が良い)が、大規模なプロジェクトではバージョン1のようなものを使うべきです。

別の考慮事項は、定義されている(設定されている)関数以外の場所でその変数を使用する予定ですか?そうでない場合は、オブジェクトに格納する必要はありません。オブジェクトはバージョン1に戻ります。

1
追加された
どうもありがとうございました! :)あなたの質問に:はい、tempEnemy.oldXという一時変数は、他のいくつかの状況でも必要です(常にそうとは限りません)。それはコードが大量で、私は自分自身で現在作業しているので、他の開発者にその一部を与えるつもりはありません。
追加された 著者 drpelz,