Was ist die beste Praxis / Coding Standard in Bezug auf die „this“ Anwendungsbereich ist AS3?

StackOverflow https://stackoverflow.com/questions/619505

Frage

Was ist die beste Praxis / Coding Standard in Bezug auf die „this“ Anwendungsbereich ist AS3? Ist dort eines? Ich glaube, es hilft wirklich mit Standardisierung und meiner Lesbarkeit, aber manchmal scheint es, wie „zu viel“.

Zum Beispiel ist die Verwendung von „this“ in dem folgenden wirklich notwendig (ich weiß, es funktioniert ohne „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;
}
War es hilfreich?

Lösung

„this“ ist nicht erforderlich, es sei denn, Sie Konflikte zwischen lokal scoped Variablen (Methode params zum Beispiel) und Instanzvariablen verhindern wollen benennen.

In Ihrem Beispiel sind Sie bereits mit einem Unterstrich eine private Variable zu markieren, so ist es ein zusätzlicher Grund, nicht „das“ zu verwenden, da Sie wirklich sagen, zweimal das gleiche.

Andere Tipps

Es ist sicher nicht notwendig, aber ich stimme zu, dass es mit der Lesbarkeit helfen kann. Da ich mehr in dynamischer Sprachen arbeiten (zum Beispiel Perl und Python) können solche Konventionen von entscheidender Bedeutung sein, um schnell zu bestimmen, wo Variablen und Funktionen scoped werden / entfernt. Wenn diese Konvention für Sie arbeitet, ich glaube nicht, dass es eine schlechte Sache an sich.

So sagt, ich habe Stunden damit verbracht Code Neuformatierung die peinliche Konventionen enthalten sind, die Lesbarkeit erschwert.

Zum Beispiel: eine Person, die ich arbeitete mit schrieb alle Zuordnungen wie folgt aus:

var foo:String= "bar";

Dies war reizend (ich ziehe „=“ so kann ich deutlich den Bediener sehen), und ich verbrachte Tausende von Codezeilen Reinigung ich viel Zeit halten musste. Seine Konvention (die, obwohl wir mehrmals behauptet, er weigerte sich zu kompromittieren) neigten meine Arbeit zu behindern.

Streben nach Einheit w / andere mit Ihnen zu arbeiten. Wenn sie benötigen, um Ihren Code zu unterstützen und diese erschwerenden zu finden, ist es wahrscheinlich nicht wert es in zu verlassen. Wenn Sie nicht jemand erwarten, direkt mit der Quelle zu arbeiten, die Nutzung Konventionen helfen zu verstehen, Ihren Code und Dokument (irgendwo), was sie bedeuten.

Wenn Sie in einem Team arbeiten, bleibt die Codierung Konventionen des Teams.

Aber ich persönlich finde die explizite Verwendung von „this“, wenn sie nicht für Begriffsklärung erforderlich, dass viel des Guten wirkt sich negativ auf die Lesbarkeit in einer statisch typisierten Sprache wie AS3 (dynamische Sprachen sind eine andere Geschichte!).

Es sollte eine Klasse nur wirklich eine Verantwortung hat, so im Allgemeinen es nicht allzu viele Eigenschaften auf sie sein sollte. Innerhalb eines Verfahrens geht man im Allgemeinen mit drei Arten von Variablen: temporäre lokale Variablen, Methodenparameter und Eigenschaften. Methoden sollten nicht zu lang sein, so sollte es leicht sein, den Unterschied zwischen den drei Typen zu erkennen - wenn sie nicht lokal definiert ist und nicht als Parameter übergeben wurden, dann eine Eigenschaft es ist. Wenn das ganze Verfahren auf dem Bildschirm paßt nicht, dann ist es wahrscheinlich zu lang!

ich nur „dies“ bei Bedarf verwende zwischen einer Eigenschaft und einem Parameter mit dem gleichen Namen eindeutig zu machen.

Ich mag nicht zu viel „dies“ verwenden, aber in Eclipse manchmal zu tun, nur die automatischen Vervollständigung erhalten (wahrscheinlich den schlechtesten Grund, es zu tun!)

würde mehr Sinn machen, wenn Ihr Beispiel ist:

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

    if (this._item["label"] == "doodad")
        this.selectedItem = this._item;
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top