Frage

Gibt es eine benifit zu verwenden:

private var _someProp:String;

public function set someProp(value:String):void
{
    _someProp = value;
}
public function get someProp():String
{
    return _someProp;
}

Im Gegensatz zu nur mit:

public var someProp:String;

Ich weiß, mit Getter / Setter kann nützlich sein, wenn Sie die weitere Verarbeitung oder Notwendigkeit müssen benachrichtigt werden, wann die Eigenschaft wie so geändert wird:

public function set someProp(value:String):void
{
    _someProp = value;
    _somePropChanged = true;
    doSomethingElse();
}

Aber wenn Sie nicht diese benötigen, dann gibt es keinen Grund zur Verwendung Getter / Setter über nur eine öffentliche var?

Danke !!

War es hilfreich?

Lösung

Je nach Sprache, sollten Sie Getter / Setter vorne bevorzugen, weil Sie sie später nicht vorstellen kann (ich sehe Sie an, Java), wenn sich herausstellt, Sie Notwendigkeit, sie zu tun.

Andere Tipps

Das hängt wirklich ein bisschen auf der Sprache / Rahmen / Toolkit Sie verwenden -

Allerdings gibt es oft Vorteile, wenn Getter und Setter im Zusammenhang mit Versionierung und API-Kompatibilität verwenden. Dies kann ein sehr nützlicher Grund, sie zu nutzen, die alle auf ihrem eigenen.

Das ist wirklich nicht ohne Kenntnis der Sprache beantwortet werden. Getter und Setter mehr kosten in den meisten Sprachen, aber sie kaufen Sie Flexibilität auf der Straße. In einigen Sprachen kann man nicht öffentlich auf einen Getter / Setter ändern, ohne den Code in den Anrufern zu ändern, da die Verwendung Syntax ändert. Aber das ist nicht ein Problem mit C #, die ich, was ich in meist schreiben.

Getter und Setter können Sie Parametervalidierung tun. Sie lassen Sie Erstellung von Objekten bis zum ersten Bezug verzögern. Sie haben viele Vorteile, und ich benutze sie, wann immer ich brauche eine dieser Vorteile von Anfang an.

Aber ich benutze Getter und Setter nur, wenn ich sie brauche sofort, oder wenn ich ziemlich sicher bin, werde ich die Flexibilität benötigen. Ansonsten sehe ich sie als aufblasen.

Als Randbemerkung, können Sie mit einem öffentlichen var beginnen und bei Bedarf wandelt es in ein Getter / Setter später im Code .. abhängig von der Sprache, die Sie verwenden.

Wenn Ihre Immobilie ist total dumm und hat keine Nebenwirkungen auf dem Rest der Klasse -. Dann mit allen Mitteln aussetzen es nur als öffentliches Feld

Es ist nur, dass in vielen Fällen Ihre Eigenschaften wird haben Nebenwirkungen, so dass Sie steuern müssen, wie sie eingestellt und abgerufen.

Als triviales Beispiel, was passiert, wenn Ihre öffentliche Variable auf etwas in Ihrem Konstruktor nicht gesetzt? Sind Sie mit diesem Wesen ok als null zurückgegeben? Oder möchten Sie diese Variable auf etwas setzen, anstatt null zurück? Dies ist ein einfaches Beispiel, in dem eine benutzerdefinierte Getter lohnt.

Getter und Setter auch Sie mehr Kontrolle darüber, welche Werte die Variable gesetzt werden kann.

bool setAge(int age){
   bol retVal = true;

   if(age <= 0)
       retVal = false;

   return retVal;
}

Ohne die Setter könnte der Wert auf Null und schlechte Dinge eingestellt werden könnten passieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top