そのため、今日はwithステートメントのパフォーマンス、読みやすさなどについて多くのことを読んでいますが、AS3でwithステートメントを使用する必要があるかどうかはまだわかりません。
withステートメントを使用することは、参照を運ぶローカル変数を作成することと同じように見えます。誰かがこのトピックに関する詳細な情報を提供できますか?
そのため、今日はwithステートメントのパフォーマンス、読みやすさなどについて多くのことを読んでいますが、AS3でwithステートメントを使用する必要があるかどうかはまだわかりません。
withステートメントを使用することは、参照を運ぶローカル変数を作成することと同じように見えます。誰かがこのトピックに関する詳細な情報を提供できますか?
さて、私自身の個人的なベンチマークから、with()ステートメントは実際には少し遅いことがわかりました。映画の最後の1オンスのパフォーマンスをすべて絞り出そうとしない限り、これは大したことではありません。定数の代わりに変数に対してforループを実行する場合、またはwhileループとforループを実行する場合にも同じことが言えます。これらのループを何度も繰り返して合成しているのでない限り、実際にそれを気にする必要はありません。
コードの可読性に関しては、with()を使用すると見た目がすっきりすると思います。それはすべてコーディングスタイルに帰着します。私が実際にwith()ステートメントを使用するのは、既知のターゲットを使用する場合のみです。マウスイベントハンドラーがクリック時にオブジェクトを選択し、それをcurrentObjectとして設定しているとします。次に、次のような機能を実行できます。
with(currentObject)
{
x = 100;
y = 100;
alpha = 0.5;
}
確かに他の方法でもできますが、私が言ったように。それはコーディングスタイルに帰着します。このメソッドを使用することで実際に見られる唯一の節約は、currentObject.x=100を実行する場合と比べてキーストロークを短縮することです。currentObject.y = 100;
with
コンパイル時がチェックされていないことが最大の問題だと思います。エラーは実行時にのみ検出されます。しかし、それはコードをきれいにするのに役立ちます、そして私はそれがいくらか好きです。あなたが何をしているのかを知っているだけで、それは役に立つかもしれません。
with
純粋なシンタックスシュガーです。
パフォーマンスに関しては、明らかに最適化ではありません。ループを数回実行しましたが、通常の属性アクセスよりもさらに遅いようです。
読みやすさという点では、利益があるかどうかさえわかりません。私は実際にGrantSkinnerの提案を使用したいと思います。ただし、それが役立つ場合がありwith (event.target as MovieClip)
ます。それ以外の場合は、中間変数宣言が必要になるためです。
結論:ほとんどの場合、それを使用しないでください。