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