Qual è lo standard di best practice / codifica rispetto a & # 8220; questo & # 8221; l'ambito è AS3?

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

Domanda

Qual è la migliore pratica / standard di codifica per quanto riguarda il "questo" l'ambito è AS3? Ce n'è uno? Sento che aiuta davvero con la standardizzazione e la mia leggibilità, ma a volte sembra che sia "troppo".

Ad esempio, è l'uso di " questo " nel seguito davvero necessario (so che funziona senza " questo ") ?:

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;
}
È stato utile?

Soluzione

" questo " non è necessario a meno che non si desideri prevenire conflitti di denominazione tra variabili con ambito locale (ad esempio parametri del metodo) e variabili di istanza.

Nel tuo esempio stai già utilizzando un trattino basso per contrassegnare una variabile privata, quindi è un motivo in più per non usare " questo " dal momento che stai davvero dicendo il doppio della stessa cosa.

Altri suggerimenti

Certamente non è necessario, ma sono d'accordo che può aiutare con la leggibilità. Dato che lavoro di più in linguaggi più dinamici (ad es. Perl e Python), tali convenzioni possono essere fondamentali per determinare rapidamente dove sono collocate / localizzate variabili e funzioni. Se questa convenzione funziona per te, non credo sia una cosa negativa, di per sé.

Detto questo, ho passato ore a riformattare il codice che conteneva convenzioni scomode che impedivano la leggibilità.

Ad esempio: una persona con cui ho lavorato ha scritto tutti i compiti in questo modo:

var foo:String= "bar";

Questo è stato irritante (preferisco "quot = =", quindi posso vedere chiaramente l'operatore), e ho trascorso molto tempo a ripulire migliaia di righe di codice che dovevo mantenere. La sua convenzione (di cui, sebbene abbiamo discusso più volte, ha rifiutato di scendere a compromessi) tendeva a ostacolare il mio lavoro.

Impegnati per l'unità con gli altri che lavorano con te. Se hanno bisogno di supportare il tuo codice e trovare questo aggravante, probabilmente non ne vale la pena lasciarlo. Se non ti aspetti che qualcuno lavori direttamente con la fonte, usa convenzioni che ti aiutino a capire il tuo codice e documento (da qualche parte) cosa intendono.

Se lavori in una squadra, segui le convenzioni di codifica della squadra.

Ma personalmente trovo l'uso esplicito di "questo" quando non richiesto per chiarimenti, eccessivo che influisce negativamente sulla leggibilità in un linguaggio tipicamente statico come AS3 (i linguaggi dinamici sono un'altra storia!).

Una classe dovrebbe davvero avere una sola responsabilità, quindi generalmente non ci dovrebbero essere troppe proprietà. All'interno di un metodo di solito ti occupi di tre tipi di variabili: variabili locali temporanee, parametri del metodo e proprietà. I metodi non dovrebbero essere troppo lunghi, quindi dovrebbe essere facile individuare la differenza tra i tre tipi: se non è definito localmente e non è stato passato come parametro, allora è una proprietà. Se l'intero metodo non si adatta allo schermo, probabilmente è troppo lungo!

Uso solo " questo " quando necessario per chiarire le ambiguità tra una proprietà e un parametro con lo stesso nome.

Preferisco non usare " questo " troppo, ma a volte farlo in Eclipse, solo per ottenere il completamento automatico (probabilmente il peggior motivo per farlo!)

Avrebbe più senso se il tuo esempio fosse:

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

    if (this._item["label"] == "doodad")
        this.selectedItem = this._item;
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top