C++ Variables Membres
Considérer la classe suivante:
class A
{
A();
int number;
void setNumber(int number);
};
Vous pourriez mettre en œuvre setNumber' de 3 façons:
Méthode 1: Utilisez le pointeur 'this'.
void A::setNumber(int number)
{
this->number = number;
}
Méthode 2: Utiliser l'opérateur de résolution de portée.
void A::setNumber(int number)
{
A::number = number;
}
Méthode 3: au Lieu de cela, désigner toutes les variables de membre avec 'm' ou '_' (c'est ma méthode préférée).
void A::setNumber(int number)
{
mNumber = number;
}
Est-ce juste une question de préférence personnelle, ou est-il un avantage pour le choix d'une méthode particulière?
Pourquoi tout est-il privé?
C'est un exemple, pour des raisons de simplicité.
La troisième. Il n'y a pas besoin de toujours utiliser
Méthode 4: éliminer les setters en faveur de la fourniture de plus haut niveau de l'exploitation (si, bien sûr, ce n'est pas toujours pratique).
Merci pour toutes les réponses de tout le monde! Je souhaite que je pourrais accepter toutes les réponses à vos questions. @JerryCoffin: fait vraiment bon sens, mais, comme vous l'avez mentionné, ce n'est pas toujours pratique.
C'est un exemple, pour des raisons de simplicité.
La troisième. Il n'y a pas besoin de toujours utiliser
this->
en C++, sauf si vous avez affaire à un basé sur un modèle de la classe de base. Laissez le verbose bruit de Java et PHP.Méthode 4: éliminer les setters en faveur de la fourniture de plus haut niveau de l'exploitation (si, bien sûr, ce n'est pas toujours pratique).
Merci pour toutes les réponses de tout le monde! Je souhaite que je pourrais accepter toutes les réponses à vos questions. @JerryCoffin: fait vraiment bon sens, mais, comme vous l'avez mentionné, ce n'est pas toujours pratique.
OriginalL'auteur Julian | 2012-04-17
Vous devez vous connecter pour publier un commentaire.
C'est surtout une question de préférence personnelle, mais permettez-moi de partager mon point de vue sur la question à partir de l'intérieur d'une société où de nombreux petits jeux sont faits simultanément (et donc il ya beaucoup de styles de codage utilisé autour de moi).
Ce lien a plusieurs bonnes liés, à des réponses: Pourquoi utiliser des préfixes sur les variables de membre dans des classes C++
Votre option 1:
Votre option 2:
Votre option 3:
OriginalL'auteur Kerr
C'est une question de style, donc de préférence personnelle, ou une préférence de l'équipe, vous travaillez avec des ou le patron de l'équipe, vous travaillez avec.
OriginalL'auteur
Option 4:
Pourquoi est l'avantage d'utiliser le même nom pour un membre et un paramètre. Rien de bon ne peut venir de cela. Bien sûr, c'est clair maintenant, mais quand vos méthodes obtiennent de grandes, et le prototype ne rentre pas dans l'écran, et de plus, il y a certains autres développeurs d'écrire du code, il peut oublier de qualifier les membres.
Comme l'a écrit, ce n'est pas une réponse.
Je veux dire, il préfère aucun des deux.
La méthode 3 est dans la notation hongroise. 🙂
Ceci a l'inconvénient que vous ne traduisent mécaniquement entre paramètre et les noms des membres et rapidement des abréviations.
OriginalL'auteur Luchian Grigore
sa toute préférence personnelle
mais ici, c'est une bonne discussion à haute non niveau de langue
https://stackoverflow.com/questions/381098/what-naming-convention-do-you-use-for-member-variables
OriginalL'auteur nate_weldon
Je dirais que le choix entre la Méthode 1 et la Méthode 3 est une question de personnel ou style d'organisation.
La méthode 2 est inférieur à la cause de la Classe::membre dénote généralement une variable membre statique, et donc serait une source de confusion si elle est utilisée pour lever l'ambiguïté entre un paramètre et variable membre.
OriginalL'auteur JohnMcG
Je vais d'accord avec Luchian en fournissant une meilleure variante. Les autres exemples que vous fournissez sont trop lourdes ou de confusion.
Option 4:
Cela fait partie de la norme de codage que nous utilisons à mon employeur et il est très clair ce que vous décrivez. Il n'est pas de la notation hongroise.
OriginalL'auteur