web-dev-qa-db-fra.com

Pourquoi utilisons-nous _ dans les noms de variables?

J'ai vu des variables comme _image et je me demandais ce que _ voulait dire?

27
SeriousTyro

Cela ne signifie pas rien. Il s'agit plutôt d'une convention de dénomination commune pour les variables de membre privé, de les garder séparées des méthodes et des propriétés publiques. Par exemple:

class Foo
{
   private int _counter;

   public int GetCounter()
   {
      return _counter;
   }

   public int SetCounter(int counter)
   {
      _counter = counter;
   }
}
52
Avada Kedavra

Dans la plupart des langues, _ est le seul caractère autorisé dans les noms de variables, à part les lettres et les chiffres. Voici quelques cas d'utilisation courants:

  • Séparer les mots: some_variable
  • Les variables privées commencent par des traits de soulignement: _private
  • Ajout à la fin pour distinguer d'un nom intégré: filter_ (puisque filter est une fonction intégrée)
  • Par elle-même en tant que variable non utilisée pendant la mise en boucle: [0 for _ in range(n)]

Notez que certaines personnes n'aiment pas vraiment ce dernier cas d'utilisation.

17
Andrew Clark

Certaines personnes l’utilisent pour indiquer qu’elles sont des variables plutôt que des noms de méthode (par exemple). Ou bien, il est évident que ce sont des variables d'instance plutôt que des variables locales. Parfois, vous voyez des préfixes supplémentaires, par exemple.

private int m_age; // Member (instance) variable
private static int g_maxAge; // Global (static) variable

C'est juste une convention. J'allais aller pour dire "il n'y a rien de magique à propos de _" mais ce n'est pas tout à fait vrai - dans certaines langues, un trait de soulignement double est réservé aux utilisations "spéciales". (L’usage exact dépend de la langue, bien sûr.)

EDIT: Exemple de la règle de double soulignement appliquée à C #. Dans la spécification C # 4, section 2.4.2:

Les identifiants contenant deux caractères de soulignement (U + 005F) consécutifs sont réservés à l'utilisation par la mise en œuvre. Par exemple, une implémentation peut fournir des mots-clés étendus commençant par deux traits de soulignement.

10
Jon Skeet

Habituellement, il sépare les champs de classe des variables. Pour éviter d'utiliser this dans les constructions de code.

class MyClass {

 private int _myIntField;


    private void setMyIntField(int value2Set) {
     _myIntField = value2Set;
    }

}
2
user784540

Le trait de soulignement dans les noms de variables est complètement facultatif. De nombreux programmeurs l'utilisent pour différencier les variables privées. Par conséquent, un caractère de soulignement est ajouté au nom des variables d'instance. Cela évite la confusion avec les variables locales.

1
mattkelly

Bien le caractère de soulignement (_) commençant par votre nom de variable est déconseillé mais il est légal et certaines personnes l’utilisent pour s’identifier en tant que variable privée et d’autres pour le nommer dans la variable de mise en cache. Passez par ce link aussi.

1
Om.

_ signifie généralement quelque chose de privé ou interne. Dans les bibliothèques standard C++, toutes les variables spécifiques à une implémentation doivent commencer par _.

1
Dani

Un autre cas d'utilisation (principalement en javascript) concerne le cas où vous devez affecter l'instance actuelle à une variable locale, comme indiqué ci-dessous.

var _this = this;

Si vous avez besoin de créer une référence d’objet temporaire local, afin de différencier la référence réellement nécessaire, nous créons comme suit:

List<Employee> employeeList = new ArrayList<>();
for (Employee _employee : employeeList) {}

Donc, si nous suivons cette meilleure pratique, chaque fois que vous voyez une variable avec _, nous en venons à la conclusion qu'elle est utilisée pour résoudre un besoin métier avec cette méthode particulière.

0

Dans la plupart des langues, cela n'affecte pas réellement la fonctionnalité du code, mais est souvent utilisé pour désigner des noms réservés ou internes.

Il est courant dans certaines langues de nommer votre variable d'instance _image ou image_, puis de définir la méthode publique utilisée pour y accéder image().

De même, certains noms tels que __FILE__ sont utilisés dans certaines langues pour désigner une variable ou constante spéciale créée par l'interpréteur ou le compilateur; ces noms sont souvent réservés pour encourager les programmeurs à éviter d'utiliser ces noms dans leurs propres programmes au cas où ils seraient utilisés dans des versions ultérieures du langage.

0
Jeremy Roman

Pour éviter les mots-clés réservés, ou en mots-clés réservés, en les évitant plus facilement. Un seul trait de soulignement est déconseillé et réservé dans JavaSE9.

0
user8205152