Quelle est la meilleure pratique / norme de codage en ce qui concerne le champ d'application «this» est AS3?

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

Question

Quelle est la meilleure pratique / norme de codage en ce qui concerne le "this" la portée est AS3? Est-ce qu'il y a un? Je pense que cela aide vraiment avec la normalisation et la ma lisibilité, mais parfois cela semble être "trop".

Par exemple, l’utilisation de " this " dans ce qui suit vraiment nécessaire (je sais que cela fonctionne sans "ceci")?:

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;
}
Était-ce utile?

La solution

"this" n'est pas obligatoire, sauf si vous souhaitez éviter les conflits de noms entre les variables à portée locale (paramètres de méthode par exemple) et les variables d'instance.

Dans votre exemple, vous utilisez déjà un trait de soulignement pour marquer une variable privée. C'est donc une raison supplémentaire de ne pas utiliser "ceci". puisque vous dites vraiment deux fois la même chose.

Autres conseils

Ce n'est certainement pas nécessaire, mais je conviens que cela peut aider à la lisibilité. Étant donné que je travaille davantage dans des langages plus dynamiques (Perl et Python, par exemple), de telles conventions peuvent être essentielles pour déterminer rapidement où les variables et les fonctions sont étendues / localisées. Si cette convention fonctionne pour vous, je ne pense pas que ce soit une mauvaise chose en soi.

C’est ainsi que j’ai passé des heures à reformater du code contenant des conventions contraignantes qui gênaient la lisibilité.

Par exemple: une personne avec qui j'ai travaillé a écrit toutes les tâches comme celle-ci:

var foo:String= "bar";

C’était irritant (je préfère "afin" de voir clairement l’opérateur), et j’ai passé beaucoup de temps à nettoyer des milliers de lignes de code que je devais conserver. Sa convention (sur laquelle il a refusé de faire des compromis bien que nous ayons discuté plusieurs fois) avait tendance à entraver mon travail.

Efforcez-vous de l’unité avec d’autres personnes travaillant avec vous. S'ils ont besoin de supporter votre code et trouvent cela aggravant, cela ne vaut probablement pas la peine de le laisser dedans. Si vous ne vous attendez pas à ce que quelqu'un travaille directement avec la source, utilisez des conventions qui vous aident à comprendre votre code et à documenter (quelque part) ce que ils veulent dire.

Si vous travaillez en équipe, respectez les conventions de codage de l'équipe.

Mais personnellement, je trouve l'utilisation explicite de "this", lorsqu'elle n'est pas requise pour la désambiguïsation, une surdose qui affecte négativement la lisibilité dans un langage à typage statique comme AS3 (les langages dynamiques sont une autre histoire!).

Une classe ne devrait avoir qu'une seule responsabilité. Par conséquent, il ne devrait généralement pas y avoir trop de propriétés. Dans une méthode, vous utilisez généralement trois types de variables: les variables locales temporaires, les paramètres de méthode et les propriétés. Les méthodes ne doivent pas être trop longues, il devrait donc être facile de repérer la différence entre les trois types - si elles ne sont pas définies localement et n'ont pas été passées en tant que paramètre, c'est une propriété. Si toute la méthode ne tient pas sur votre écran, elle est probablement trop longue!

Je n'utilise que "ceci". pour éviter toute ambiguïté entre une propriété et un paramètre portant le même nom.

Je préfère ne pas utiliser "cela". trop, mais parfois dans Eclipse, juste pour obtenir l'auto-complétion (probablement la pire raison de le faire!)

Cela aurait plus de sens si votre exemple était:

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

    if (this._item["label"] == "doodad")
        this.selectedItem = this._item;
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top