Si vous utilisez des getters et des setters, comment nommer les variables de membre privé?

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

  •  05-07-2019
  •  | 
  •  

Question

En guise de suivi pour cette question sur les préfixes , je suis d’accord avec la plupart des gens sur le sujet pour dire que les préfixes sont mauvais. Mais qu'en est-il si vous utilisez des getters et des setters? Ensuite, vous devez différencier le nom de getter accessible au public de la variable stockée de manière privée. J'utilise normalement un trait de soulignement, mais existe-t-il un meilleur moyen?

Était-ce utile?

La solution

Ceci est une question complètement subjective. Il n'y a pas de "meilleur" manière.

Une façon est:

private int _x;
public get x():int { return _x; }
public set x(int val):void { _x = val; }

Un autre est:

private int x;
public get X():int { return x; }
public set X(int val):void { x = val; }

Ni est la bonne réponse. Chacun a des avantages et des inconvénients de style. Choisissez celui que vous préférez et appliquez-le régulièrement.

Autres conseils

J'aime préfixer les champs d'un trait de soulignement, comme d'autres l'ont mentionné.

private int _x;

Je pense cependant que cela va au-delà des préférences personnelles (comme l'a dit David Arno dans ce fil). Je pense qu'il y a de vraies raisons objectives de le faire:

  1. Cela signifie que vous évitez de devoir écrire "this.x = x". pour les affectations (en particulier dans les setters et les constructeurs).
  2. Il distingue vos champs de vos variables / arguments locaux. Il est important de faire cela: les champs sont plus difficiles à manipuler que les locaux, car leur portée est plus large / leur durée de vie est plus longue. Ajouter un caractère supplémentaire est un signe d’avertissement mental pour les codeurs.
  3. Dans certains IDE, le trait de soulignement oblige l'auto-complétion à trier les champs en haut de la liste de suggestions. Cela facilite la visualisation de tous les champs de la classe dans un bloc. Cela peut être utile à son tour. sur les grandes classes, vous ne pourrez peut-être pas voir les champs (généralement définis en haut de la classe) sur le même écran que le code sur lequel vous travaillez. Les classer en haut donne une référence pratique.

(Ces conventions s'appliquent à Java, mais des conventions similaires existent pour d'autres langages.

Ces choses semblent petites, mais leur prévalence me facilite définitivement la vie lorsque je code.

En java, il y a this.foo en python, il y a self.foo et d'autres langages ont des choses similaires, donc je ne vois pas la nécessité de nommer quelque chose d'une manière spéciale, alors que je peux déjà utiliser un langage. Dans le même contexte, de bons IDE et éditeurs comprennent les variables de membre et leur attribuent un surlignage spécial. Vous pouvez ainsi le voir sans utiliser de noms spéciaux.

Dans un langage sensible à la casse, je viens d'utiliser:

private int myValue;

public int MyValue
{
    get { return myValue; }
}

Sinon, j'utiliserais un trait de soulignement

Private _myValue As Integer

Public ReadOnly Property MyValue As Integer
    Get
        Return _myValue
    End Get
End Property

Il y a presque autant de façons différentes de faire cela que de programmeurs, mais certaines des manières les plus populaires incluent (pour une propriété Foo ):

  • mFoo
  • m_foo
  • _foo
  • foo

Je aime écrire "this.x = x". C'est très clair pour moi. De plus, lorsque vous utilisez Eclipse, vous pouvez le faire générer automatiquement vos getters / setters de cette manière.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top