質問
使用するbenifitがあります:
private var _someProp:String;
public function set someProp(value:String):void
{
_someProp = value;
}
public function get someProp():String
{
return _someProp;
}
単に使用するのではなくます:
public var someProp:String;
あなたは、処理を進めるかを通知する必要がありますする必要があるときに私が役立つことができゲッター/セッターを使用して実現するプロパティがそうのように変更されたときます:
public function set someProp(value:String):void
{
_someProp = value;
_somePropChanged = true;
doSomethingElse();
}
しかし、あなたがこれを必要としない場合には、単にプロパティpublic varを使用しての上にゲッター/セッターを使用する理由は何ですか?
感謝!!
解決
あなたの言語に応じて、あなたはそれが判明した場合、あなたがそれらを必要とします(私は、Java、あなたに探しています)、後でそれらを導入することはできませんので、アップフロントゲッター/セッターを好む必要があります。
他のヒント
これは本当にあなたが使用している言語/フレームワーク/ツールキットに少し依存します バージョン管理およびAPIの互換性に関連したゲッターとセッターを使用している場合、
しかし、多くの場合が利点です。これは、すべて自分自身で、それらを使用するには非常に便利な理由することができます。
これは本当に言語を知らなくてもお答えできません。ゲッタとセッタは、ほとんどの言語で、よりコストが、彼らはあなたの道の柔軟性を購入します。一部の言語では、使用の構文の変更ので、呼び出し元のコードを変更することなく、ゲッター/セッターに公衆を変更することはできません。しかし、これは私がほとんどで書いたもののC#、との問題ではありません。
GetterおよびSetterを使用すると、パラメータの検証を行うことができます。彼らは、あなたが最初に参照されるまでオブジェクトの作成を遅らせてみましょう。彼らは多くの利点を持っている、と私は最初からこれらの利点の1を必要とする時はいつでも、私はそれらを使用します。
しかし、私はすぐにそれらを必要とする場合にのみ、私はゲッターとセッターを使用するか、または私はかなり確信しているとき、私は柔軟性を必要とするつもりです。そうでなければ私は肥大化としてそれらを表示します。
注意点として、あなたはプロパティpublic varで開始することができ、後のコードでゲッター/セッターに必要な変換、それならば。
- そして、すべての手段によって、ちょうど公共の場として公開
。そのちょうどその多くの場合、あなたの特性は、<全角> は副作用を持っているので、あなたは彼らが設定され、アクセス方法を制御する必要があります。
あなたのパブリック変数をコンストラクタで何かに設定されていない場合は、簡単な例として、何が起こりますか?あなたは、これはNULLとして返されるとOKですか?それとも、何かにこの変数を設定するのが好きではなく、nullを返すでしょうか?これは、カスタムゲッターが価値がある簡単な例です。
GetterおよびSetterはまた、あなたの変数に設定することができますどの値をより細かく制御を与えるます。
bool setAge(int age){
bol retVal = true;
if(age <= 0)
retVal = false;
return retVal;
}
セッターがなければ、値はゼロに設定することができ、悪いことが起こる可能性があります。