Quelle est la bonne convention de dénomination pour les variables de fonction de grande portée?

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

  •  02-07-2019
  •  | 
  •  

Question

Vous pouvez avoir différentes conventions de dénomination pour les membres de classe, les objets statiques, les objets globaux et les structures. Voici quelques exemples:

_member
m_member

ou dans le cas Java, l'utilisation de this.member .

Mais existe-t-il une bonne technique ou convention de dénomination pour la portée des variables de fonction qui se transmet lorsqu'une seule variable possède une portée de fonction complète ou une portée de courte durée de vie?

void MyFunction()
{
  int functionScopeVariable;

  if(true)
  {
    //no need for function variable scope naming convention
  }
}
Était-ce utile?

La solution

Nous avons tendance à utiliser un préfixe l_ dans nos fonctions pour "local". Et ça a plutôt bien fonctionné.

Autres conseils

J'encourage en fait la délégation de cette tâche à l'EDI / éditeur que vous utilisez.

Non, je ne parle pas réellement de nommer des variables, cela reste encore mieux fait par un humain. Mais la tâche sous-jacente de telles stratégies de nommage est de vous montrer quel type de variable chaque nom représente.

Chaque IDE digne de ce nom peut définir différents styles (couleurs, polices, types de police, ...) en différents types de variables (membre d'instance, membre statique, argument, variable locale, ...), laissant ainsi l'EDI vous indique le type de variable en question, ce qui vous évite de devoir taper à chaque fois les suffixes (ou inutiles) avant ou après.

Donc, ma suggestion: utiliser des noms évocateurs sans préfixe ni suffixe.

Une méthode consiste à suivre la directive suivante: plus le champ de la variable est large, plus son nom est long. De cette manière, les variables globales ont des noms descriptifs longs, alors que les choses limitées dans le champ d'application, telles que la variable d'index de boucle, peuvent être aussi petites que des lettres simples.

J'utilise des préfixes ou des conventions de dénomination spéciales pour les variables globales, statiques et membres afin de ne pas utiliser de préfixes pour les variables locales. Je préfère avoir la possibilité d'utiliser des noms de variable locaux courts, en particulier pour les variables de boucle.

Il existe un argument selon lequel vous ne devriez pas avoir de "fonctions à grande portée", alors il ne devrait pas y avoir de problème de nommage - utilisez simplement les conventions de dénomination de la variable "petite portée".

Les instructions fournies par MSFT et d'autres guides de style pour les champs d'instance privés sont _nom_membre (notation de casse-chameau précédée de " _" ). C’est également la convention utilisée dans le code source de nombreux didacticiels Microsoft récents.

Je l'utilise parce que c'est plus court, pas le hongrois, et que R # le supporte comme règle par défaut pour les champs d'instance privés.

Je l’aime aussi parce qu’il masque en quelque sorte les champs privés d’Intellisense, comme il se doit, car vous devriez préférer accéder en premier à vos membres publics. Si je souhaite accéder à la propriété Nom et que je commence à taper " Na " La première suggestion est la propriété d'instance publique nommée cascadée par Pascal. Dans les rares cas où je souhaite accéder directement au champ privé, cela m'oblige à prendre une décision consciente de commencer à taper " _ ", puis la liste complète de mes champs privés est affichée dans Intellisense. apparaitre.

J'ai également vu des instructions indiquant qu'il devrait s'agir de _MemberName s'il s'agit du champ de support d'une propriété publique nommée MemberName (notation de casse Pascal avec le préfixe " _ "). C’est comme ça parce que je pense que la capitale M est redondante, ajoute des frappes inutiles au clavier et n’ajoute aucune information supplémentaire.

Tout se résume vraiment à ce que les directives de style pour la langue suggèrent s’il en existe.

Je suppose que tout va bien tant que cela transmet le sens de son utilisation.

Je préfère garder les choses simples, j'utilise:

 m_varname - Class member variables
 g_varname - Global variables

J'utilise la même convention que j'utilise pour les membres de la classe. L'IDE devrait s'occuper de trouver votre déclaration. Si une fonction est aussi volumineuse et source de confusion qu’elle devient un problème, le problème doit être résolu.

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