Frage

Seit dem Aufkommen von AS3 Ich habe wie diese Arbeit:

private var loggy:String;

public function getLoggy ():String
{
  return loggy;
}

public function setLoggy ( loggy:String ):void
{
  // checking to make sure loggy's new value is kosher etc...
  this.loggy = loggy;
}

und hat es vermieden, wie dies funktioniert:

private var _loggy:String;

public function get loggy ():String
{
  return _loggy;
}

public function set loggy ( loggy:String ):void
{
  // checking to make sure loggy's new value is kosher etc...
  _loggy = loggy;
}

Ich habe mit AS3 impliziten Getter / Setter vermieden teilweise so, dass ich einfach mit der Eingabe beginnen „bekommen ..“ und Inhalt unterstützen wird mir eine Liste aller meiner Getter und ebenso für meine Setter. Ich mag nicht auch Unterstrichen in meinem Code, der mich aus dem impliziten Weg gedreht.

Ein weiterer Grund ist, dass ich es vorziehen, das Gefühl dieser:

whateverObject.setLoggy( "loggy's awesome new value!" );

folgt aus:

whateverObject.loggy = "loggy's awesome new value!";

Ich glaube, dass die ehemalige reflektiert besser, was tatsächlich in dem Code geschieht. Ich Funktionen nenne, nicht Werte direkt einstellen.

Nach der Installation von Flash Builder und der großen neuer Plugin SourceMate ( die einige der nützlichen Funktionen erhalten hilft, dass FDT berühmt in FB) ich erkennen, dass, wenn ich SourceMate die Verwendung „erzeugen Getter und Setter“ -Funktion es meinen Code automatisch einrichtet die implizite Route mit:

private var _loggy:String;

public function get loggy ():String
{
  return _loggy;
}

public function set loggy ( loggy:String ):void
{
  // do whatever is needed to check to make sure loggy is an acceptable value
  _loggy = loggy;
}

Ich Figur, dass diese SourceMate Menschen müssen wissen, was sie tun, oder sie würden nicht Workflow-Erweiterung Plugins für die Codierung in AS3 schreiben, so dass ich jetzt meine Wege bin in Frage stellt.

Meine Frage an Sie lautet: Kann jemand mir einen guten Grund, warum ich geben soll meinen ausdrücklichen g / s Wege auf, starten Sie die implizite Technik, und dieses stinkende wenig _underscores für meine private Vars umarmen? Oder zurück, um mich in meine Gründe sich für Dinge, die Art und Weise zu tun, dass ich tun?

War es hilfreich?

Lösung

Um ehrlich zu sein ich denke, das viel wie Einrücken oder Klammer-Stil ist - wo die Bedeutung / Hilfs Ihren Stil passend zu welcher Codebasis Sie arbeiten mit Finsternissen jeden „inherent“ Vorteils zu jedem Ansatz. Mit dieser sagte aber, welche davon würden Sie lieber in einem Physik-Engine halten?

// with getters
body.position.y += body.velocity.y * dt;

// without
body.getPosition().setY( body.getPosition().getY() + body.getVelocity.getY() * dt );

Ein weiterer Vorteil der Getter / Setter ist, dass Sie immer zunächst Eigenschaften einfache öffentliche Variablen machen, und Refactoring sie in Getter / Setter später, wenn nötig, ohne externen Code zu ändern. Sie haben nicht präventiv Build Accessoren für jede Variable; Sie können warten, bis Sie sich entscheiden, Sie sie benötigen.

Andere Tipps

Ich kann aus der Spitze von meinem Kopf von ein paar Gründen denken.

  1. Implizite get / set Angebote besser / einfache Datenbindungs ??Funktionalität. Es ist einfacher, die Ereignisse und paßt in dem „Flex-Modell“ viel schöner verkabeln.
  2. Es macht Ihr erzeugt ASDoc viel prägnanter.
  3. Es ist, glaube ich, die einzige Möglichkeit, eine Eigenschaft im Eigenschafteninspektoren für benutzerdefinierte Komponenten zu erhalten, wenn Sie in der Entwurfsansicht arbeiten.

Beachten Sie, dass, wenn alles, was Sie tun, ist gerade get / set, gibt es nicht viel verloren, indem nur eine öffentliche var Belichtungs- und unter Umgehung der Getter / Setter mit dem Halte var (_variable). Sie können jederzeit zu einem impliziten get ändern / set später, ohne die Klassen externe Schnittstelle zu ändern.

Ich benutze keine impliziten Getter denn wenn verhärtet Refactoring und die Lesbarkeit des Codes. Es ist in der Regel nicht sehr leicht zu erkennen, wenn Zuordnung zu dem öffentlichen Bereich ist oder es ist Accessormethode. Also, wenn Sie einen Fehler verfolgen möchten Sie in böse Jagd fallen könnten.

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