1

AS3 の「this」スコープに関するベスト プラクティス/コーディング標準は何ですか? ありますか?標準化と読みやすさには本当に役立つと思いますが、多すぎる」ように思える場合もあります。

たとえば、次の「これ」の使用は本当に必要ですか (「これ」がなくても機能することはわかっています)?:

private var _item:Object;

private var selectedItem:Object;

public function set item(value:Object):void
{
    this._item = value;

    if (this._item["label"] == "doodad")
        this.selectedItem = value;
}

public function set item(value:Object):void
{
    return this._item;
}
4

4 に答える 4

3

ローカルスコープの変数(たとえば、メソッドparams)とインスタンス変数の間の名前の競合を防ぎたい場合を除いて、「this」は必要ありません。

あなたの例では、すでにアンダースコアを使用してプライベート変数をマークしているので、実際には同じことを2回言っているので、「this」を使用しないという追加の理由があります。

于 2009-03-06T19:57:37.753 に答える
1

確かに必要ではありませんが、読みやすさに役立つことに同意します。私はより動的な言語 (Perl や Python など) でより多くの作業を行っているため、このような規則は、変数や関数のスコープ/配置場所をすばやく判断するために不可欠です。この慣例がうまくいくのであれば、それ自体は悪いことではないと思います。

とはいえ、読みやすさを妨げるぎこちない規則を含むコードの再フォーマットに何時間も費やしました。

たとえば、私が一緒に働いたある人は、すべての課題を次のように書きました。

var foo:String= "bar";

これはいらいらさせられ (演算子がはっきりと見えるように " = " の方が好きです)、維持しなければならない何千行ものコードをクリーンアップするのに多くの時間を費やしました。彼の慣習 (私たちは何度か議論したが、彼は妥協を拒んだ) は私の仕事を妨げる傾向があった。

あなたと一緒に働く他の人々との団結を目指して努力してください。彼らがあなたのコードをサポートする必要があり、これが厄介だと思うなら、それをそのままにしておくのはおそらく価値がありません.ソースを直接操作することを誰も期待していない場合は、コードを理解するのに役立つ規則を使用し、(どこかに)何を文書化しますか?彼らは意味します。

于 2009-03-06T17:04:03.613 に答える
1

チームで作業している場合は、チームのコーディング規則に従ってください。

しかし、個人的には、「this」を明示的に使用すると、あいまいさを解消する必要がない場合、AS3 のような静的に型付けされた言語で可読性に悪影響を与える過度の使用が見つかります (動的言語は別の話です!)。

クラスは実際には 1 つの責任のみを持つ必要があるため、通常、クラスにはあまり多くのプロパティがあってはなりません。メソッド内では、通常、一時ローカル変数、メソッド パラメーター、およびプロパティの 3 種類の変数を扱います。メソッドは長すぎないようにする必要があるため、3 つの型の違いを簡単に見つけることができます。ローカルで定義されておらず、パラメーターとして渡されていない場合、それはプロパティです。メソッド全体が画面に収まらない場合は、おそらく長すぎます。

プロパティと同じ名前のパラメーターを区別する必要がある場合にのみ、「this」を使用します。

于 2009-03-06T17:29:42.257 に答える
0

私は「this」をあまり使いたくないのですが、Eclipse ではオートコンプリートを取得するためだけに使用することがあります (おそらく、これを使用する最悪の理由です!)

あなたの例が次の場合、より理にかなっています:

public function set item(_item:Object):void
{
    this._item = _item;

    if (this._item["label"] == "doodad")
        this.selectedItem = this._item;
}
于 2009-03-06T19:46:12.210 に答える