2009-03-06 16 views
1

"this"スコープに関するベストプラクティス/コーディング標準はAS3ですか? 1つはありますか?私はそれが標準化に本当に役立つと感じています。私のは読みやすいですが、時には "あまりにも多い"ようです。例えば"this"スコープに関するベストプラクティス/コーディング標準はAS3ですか?

、「この」次は本当に必要では(私はそれが「この」なしで動作します知っている)を使用することである?:

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; 
} 

答えて

3

ローカルスコープの変数(メソッドのパラメータなど)とインスタンス変数の名前の競合を避けたい場合を除き、 "this"は必須ではありません。

あなたの例では、プライベート変数をマークするためにすでにアンダースコアを使用していますので、実際には同じことを2回言っているので、 "this"を使用しないでください。

+0

ええ、私はかなり "これ"の使用を避けることに決めました。なぜなら、開発者がスコープ間で変数名を再利用することを奨励しているだけなので、それは悪い習慣です。 –

1

それは確かに必要はありませんが、私はそれことに同意します読みやすくすることができます。私はより動的な言語(PerlやPythonなど)でより多くの作業を行っているため、変数や関数のスコープや場所をすばやく判断するためにはこのような規則が不可欠です。このコンベンションがあなたのために働くなら、私はそれが悪いことではないと思います。

このように、私は可読性を妨げた厄介な慣習を含むコードを再フォーマットするのに時間を費やしました。例えば

var foo:String= "bar"; 

これは、(私が好む「=」ので、私はオペレータをはっきりと見ることができる)刺激性を示した、と私は多くの時間を費やし:私が働いていた1人が、このようなすべての割り当てが書きました私が維持しなければならなかった何千行ものコードを掃除しました。彼の大会(私たちが何度か議論したが、彼は妥協することを拒んだ)は私の仕事を妨げる傾向があった。

あなたと協力して他者と結束しよう。彼らがあなたのコードをサポートし、これを悪化させる必要があるならば、それを残しておく価値はないでしょう。あなたがソースを直接使って作業することを期待していないなら、コードを理解し、(どこか)彼らは意味する。

1

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

個人的には、私はAS3のような静的型付けされた言語の読みやすさに否定的な影響を与える過度の曖昧さ回避のために必要とされないときには、 "this"を明示的に使用しています。

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

プロパティと同じ名前のパラメータを明確にするために必要なときだけ、「this」を使用します。

+0

はい、さまざまなスコープで同じ名前の変数/プロパティを指定しないという基準に従うことが重要だと思います。 –

0

私はちょうどあなたの例であった場合、オートコンプリート(それを行うには、おそらく最悪の理由!)

がより理にかなって取得するには、「この」あまりにも多くを使用し、時にはEclipseで行うことを好まない。

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

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

私はFlex Builder 3をほとんど使用し、自動補完のためにCTRL + SPACEを使います。しかし、Eclipseプラグインでどのように動作するかはわかりません。 –

+0

はい、先日これが見つかりました! – Iain

関連する問題