IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

[Norme] Ecriture d'attribut


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut [Norme] Ecriture d'attribut
    Bonjour à tous,

    J'aime bien différencier mes attributs membres d'une classe des variables de fonctions et variables temporaires...

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    template <typename TYPE>
    class Point
    {
    public:
    	Point() : _point (std::make_pair(0,0)) {};
    	Point(std::pair<TYPE, TYPE> point) : _point(point) {};
    	Point(TYPE x, TYPE y) :_point(std::make_pair(x,y)) {};
     
    	TYPE getX() const { return _point.first; }
    	TYPE getY() const { return _point.second; }
     
    	bool operator!= (const Point & droite) const {return !(*this == droite); } 
    	bool operator== (const Point & point) const; // paramètre de fonction : pas de "décoration"
    private:
    	std::pair<TYPE, TYPE> _point; // ici attribut de ma classe : commence par un _
    };
    Commencer par un "_" les attributs membres vous parait une bonne pratique? Une sémnatique à éviter en vue de la prochaine norme?
    (Certaines syntaxes sont réservées au "standard" )

    Merci !

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    80
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Mars 2006
    Messages : 80
    Par défaut
    Citation Envoyé par poukill
    Bonjour à tous,

    J'aime bien différencier mes attributs membres d'une classe des variables de fonctions et variables temporaires...

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    template <typename TYPE>
    class Point
    {
    public:
    	Point() : _point (std::make_pair(0,0)) {};
    	Point(std::pair<TYPE, TYPE> point) : _point(point) {};
    	Point(TYPE x, TYPE y) :_point(std::make_pair(x,y)) {};
     
    	TYPE getX() const { return _point.first; }
    	TYPE getY() const { return _point.second; }
     
    	bool operator!= (const Point & droite) const {return !(*this == droite); } 
    	bool operator== (const Point & point) const; // paramètre de fonction : pas de "décoration"
    private:
    	std::pair<TYPE, TYPE> _point; // ici attribut de ma classe : commence par un _
    };
    Commencer par un "_" les attributs membres vous parait une bonne pratique? Une sémnatique à éviter en vue de la prochaine norme?
    (Certaines syntaxes sont réservées au "standard" )

    Merci !
    De mon coté les variables private de mes classes commencent par un m_ , aprés je ne sais pas s'il y a une norme à respecter .....

  3. #3
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut

    http://c.developpez.com/faq/cpp/?pag...eurs_interdits

    Juste une petite erreur qui sera corrigée dans la prochaine version : ce n'est pas "les noms commençant par __", mais "les noms contenant __".

    Certains utilisent _ mais comme suffixe.
    Perso j'aime bien préfixer par "my", ça a un côté sympa quand tu lis le code dans ta tête.

  4. #4
    Membre expérimenté
    Avatar de superspag
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    153
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 153
    Par défaut
    Il n'y a pas vraiment de norme... Chacun fait un peu comme il veut.
    Il y a néanmoins, dans la plupart des boites, une sorte de "règle de codage" décidé par avance et que les développeurs s'efforcent de respecter. Ca permet de travailler plus facilement en équipe...

    Par exemple, quelques régle de syntaxe de chez nous :
    - Le nom de la classe commence par une majuscule. Si le nom de la classe est une concaténation de plusieurs mots, l'initiale de chaque mot est alors une majuscule. Les autres lettres sont des minuscules.

    ...

    - D'une manière générale, les noms de fonctions et méthodes commencent par une minuscule.
    Exception: pour les fonctions et méthodes écrites dans les extensions MFC, les noms commencent par des majuscules.

    ...

    - Les noms de variables commencent par une minuscule. Si c'est une concaténation de plusieurs mots, chaque mot suivant le premier commence par une majuscule. Les autres lettres sont des minuscules.
    Attributs non-MFC : _myAttribute
    Attributs MFC : m_myAttribute
    Pointeurs : pMyPointer ou _pMyAttributePointer
    Variables globales : g_myVariable
    Variables statiques : s_myVariable

    ...

  5. #5
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    Oui j'avais déjà vu la FAQ, mais je parlais de l'évolution vers le nouveau standard!
    Au départ, je suffixai, maintenant je préfixe.

    Bon, ok, si y'a pas de problèmes, roulons comme ça !

    Merci à vous

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    366
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 366
    Par défaut
    il ya une norme "hongroise" ou "suedoise" je sais plus, tres chere aux MFC.

    en gros, tu prefix les donnees par leur type (ex : iA pour int A , lpszString pour char * String (lpsz-> long pointer string terminated by 0) ...

    et tu ajoutes encore un prefixe m_ ou g_ si il s agit de donnees membres ou globales.

    Personnellement, pour l avoir un moment utilisee je te deconseille ce genre de methode ou tu finis par avoir plus de prefix que de nom utile.

    Je trouve finalement que moins il y a a lire, plus c 'est lisible donc je n utilise qu un prefix g_ si la variable est globale (ce qui est extremement rare) et une notation majuscule pour les CONSTANTES ou MACROS (encore tres rare aussi)

  7. #7
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Oui j'avais déjà vu la FAQ, mais je parlais de l'évolution vers le nouveau standard!
    Je ne suis pas le mieux placé pour parler de ça, mais a priori je n'ai rien vu qui modifie les règles de nommage dans le prochain standard.

  8. #8
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    OK merci à smashy et Laurent!

    La notation _variable est quand même un peu lourde

    m_variable, c'est sans doute un peu mieux.
    myvariable, c'est plus trop lisible
    my_variable, c'est pas mal...

    Bon, je vais réfléchir...


    Merci !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Acces ecriture sur un attribut via un dictionnaire
    Par luluunix dans le forum Général Python
    Réponses: 9
    Dernier message: 13/03/2012, 10h35
  2. [NORME ECRITURE] onmouseover
    Par glloq8 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 10/05/2006, 18h25
  3. Normes d'ecriture java
    Par mortalius dans le forum Langage
    Réponses: 4
    Dernier message: 08/04/2006, 14h30
  4. Lire un attribut dans un fichier XML en C++
    Par ti.k-nar dans le forum XML
    Réponses: 2
    Dernier message: 14/10/2002, 16h22
  5. comment changer d'attribut de fonte dans un Tlabel?
    Par sb dans le forum Composants VCL
    Réponses: 3
    Dernier message: 21/08/2002, 17h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo