“ this”に関するベストプラクティス/コーディング標準は何ですか?スコープはAS3ですか?
-
03-07-2019 - |
質問
「これ」に関するベストプラクティス/コーディング標準は何ですか。スコープはAS3ですか?あるの?標準化と私のの読みやすさには本当に役立つと思いますが、「多すぎる」と思われることもあります。
たとえば、" this"の使用は以下は本当に必要です(" 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;
}
解決
" this"ローカルスコープの変数(インスタンスのメソッドparams)とインスタンス変数との名前の競合を防ぎたい場合を除き、必要ありません。
あなたの例では、すでにアンダースコアを使用してプライベート変数をマークしているので、「これ」を使用しないことは特別な理由です。本当に同じことを2回言っているからです。
他のヒント
それは確かに必要ではありませんが、読みやすさに役立つことに同意します。私はより動的な言語(PerlやPythonなど)でより多くの作業を行うため、このような規則は、変数と関数のスコープ/場所を迅速に決定するために不可欠です。この慣習があなたのために働くなら、それ自体は悪いことだとは思いません。
したがって、読みやすさを妨げる厄介な慣習を含むコードの再フォーマットに何時間も費やしました。
たとえば、私と一緒に仕事をした1人がすべての課題を次のように書きました。
var foo:String= "bar";
これはいらいらしました(私は" ="を好むので、オペレーターを明確に見ることができます)。私は、維持しなければならない数千行のコードの整理に多くの時間を費やしました。彼の慣習(私たちは何度か議論しましたが、妥協を拒否しました)は私の仕事を妨げる傾向がありました。
一緒に働く他者との団結を目指してください。彼らがあなたのコードをサポートする必要があり、この悪化を見つける必要がある場合は、そのままにしておく価値はないでしょう。誰かがソースを直接操作することを期待しない場合は、コードとドキュメントを理解するのに役立つ規則を使用してくださいつまり。
チームで作業している場合は、チームのコーディング規則に従ってください。
しかし、個人的には、「これ」を明確に使用すると、曖昧さの解消に必要でない場合、AS3のような静的に型付けされた言語の可読性に悪影響を及ぼす過剰な使用が見つかります(動的言語は別の話です!)
クラスには実際には1つの責任しかありません。そのため、一般的にプロパティが多すぎてはなりません。メソッド内では、通常、一時ローカル変数、メソッドパラメーター、プロパティの3種類の変数を扱います。メソッドは長すぎてはならないので、3つのタイプの違いを簡単に見つけることができます。ローカルに定義されておらず、パラメーターとして渡されていない場合は、プロパティです。メソッド全体が画面に収まらない場合は、おそらく長すぎます!
「これ」だけを使用します;同じ名前のプロパティとパラメーターを明確にする必要がある場合。
「これ」を使用したくない多すぎますが、Eclipseでオートコンプリートを取得するために行う場合があります(おそらくそれを行う最悪の理由です!)
例が次の場合、より意味があります:
public function set item(_item:Object):void
{
this._item = _item;
if (this._item["label"] == "doodad")
this.selectedItem = this._item;
}