2009-11-28 5 views
5

Je pensais que AS3 avait maintenant des capacités privées ajoutées. Alors pourquoi devrais-je encore préfacer les variables privées avec un underscore?AS3: les variables privées doivent-elles avoir un _

private var _privVar:String; 
+0

Avez-vous trouvé la bonne réponse? –

Répondre

3

Vous n'êtes pas obligé. C'est quelque chose qui encourage la lisibilité, mais n'est en aucun cas obligatoire. Entièrement une préférence personnelle.

10

En règle générale, j'utilise le langage Adobe en mode ActionScript 3.

N'utilisez pas de traits de soulignement pour les variables privées sauf si vous utilisez un getter or setter. Par exemple:

private var _foo:String; 
public function get foo():String 
{ 
    return _foo; 
} 
public function set foo(value:String):void 
{ 
    _foo = value; 
} 

Cet exemple getter/setter est un peu inutile, comme vous pouvez simplement faire une propriété publique qui fait la même chose. Utilisez uniquement un getter ou un setter lorsque vous avez besoin de faire quelque chose spécial lorsque vous obtenez ou définissez la propriété. Même alors, il est généralement préférable de créer une méthode publique à la place.

Également un autre point. Personnellement, je ne pense pas que ce soit une bonne idée d'abréger vos noms de variables ou de méthodes. Donc, au lieu d'appeler ma variable privVar, je l'appellerais privateVariable. Cela est particulièrement vrai si vous utilisez un IDE avec auto-complétion/suggestion comme FlashBuilder (Flex Builder) ou FlashDevelop. Pour plus d'informations, reportez-vous au Adobe - coding conventions and best practices. L'utilisation d'un underscore est juste une convention.

+1

Si le getter et le setter ne font rien de spécial, il serait plus rapide de rendre la variable publique. Ça ne fera de mal à personne. – LiraNuna

+0

exactement! Mon exemple était simplement très simple pour exprimer mon point de vue. Il est assez rare que vous utilisiez des getters ou des setters dans AS3. La plupart du temps, vous faites une propriété publique ou une méthode publique. –

+1

Assez rare? À peine. Je suppose que cela dépend de la façon dont vous codez, mais je code un peu sur les interfaces et getter/setter est le seul moyen d'y parvenir. –

0

Et j'essaie de les éviter parce que ça perturbe mon intellisense. Je suis habitué à taper obj.va et en appuyant sur ctrl-espace dans Flex Builder pour obtenir obj.variableName - cela ne, ne les versions antérieures d'ActionScript ont besoin fonctionne pas bien avec _variableName

Btw vous préfacer les noms des variables « privées » avec un trait de soulignement ?

+0

Ça le gâche, parce qu'il semble que vous n'obtenez pas l'idée. L'utilisation d'un trait de soulignement est parce que vous voulez marquer une variable en tant que «membre». Ce qui signifie que c'est privé ou protégé. Vous ne pouvez donc pas simplement l'utiliser comme obj.variable - cela devrait être fonction ou getter/setter, qui bien sûr ne commence pas par un underscore. –

0

Je pense que vous ne devriez pas abréger les variables. il durcit la lisibilité et l'achèvement automatique. D'un autre côté, dans ma pratique, ce n'est pas une bonne chose d'utiliser des getters et setters AS intégrés avec une syntaxe de function set someVar (value) : void. Cela durcit beaucoup le refactoring parce que quand on arrive dans beaucoup de temps en ne sachant pas qu'une variable est un setter ou un getter.

Dans où je travaillais nous avons utilisé la convention d'accès aux propriétés Java Beans comme function setSomeVar (value) : void. Bien sûr, parce que ce n'est pas une utilisation courante dans la communauté AS, ces IDE comme FlashDevelop ne supportent pas la génération de ces getters et setters.

Questions connexes