AS3でwithステートメントを使用するかどうかを使用するかどうか?

StackOverflow https://stackoverflow.com/questions/4134939

  •  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), 、それ以外の場合は中間変数宣言が必要だからです。

結論:ほとんどの場合、それを使用しないでください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top