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 :

Pourquoi n'utilisez-vous pas la convention de nommage de la STL ?


Sujet :

C++

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 142
    Points : 89
    Points
    89
    Par défaut Pourquoi n'utilisez-vous pas la convention de nommage de la STL ?
    Good morning francophonie,

    En observant le code d'un peu tout le monde, je remarque que tous ou presque utilisent la convention de nommage à la Pascal (ceGenreDeChoses, également utilisée en Java), alors que les racines du langage C++ et sa librairie standard elle-même indiquent (même si n'imposent pas) une convention de nommage à la C, que_vous_devez_connaître_également.
    Pourquoi ne l'utilisez-vous pas ?

    Évidemment, ce n'est qu'une question de style, rien de bien crucial. C'est juste intrigant.

  2. #2
    Membre éprouvé
    Avatar de Spout
    Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2007
    Messages : 904
    Points : 1 067
    Points
    1 067
    Par défaut
    Pour ma part, c'est totalement arbitraire. Je préfère simplement des variables/fonctions GetQuelqueChose que get_quelque_chose. Je trouve ça plus propre à relire et moins long.
    Mais encore une fois, c'est totalement arbitraire .
    "L'ordinateur obéit à vos ordres, pas à vos intentions." [Anonyme]

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 142
    Points : 89
    Points
    89
    Par défaut
    Ce qui m'intrigue le plus, c'est le choix d'une autre convention de nommage que la librairie standard dudit langage.
    Par exemple, j'aime bien la notation C, mais lorsque je code en Java, je me pose pas de question, jeCodeCommeÇa, pour faire corps avec la librairie standard.

    Comme tout le monde se fait sa propre petite convention, on se retrouve fatalement avec des codes très hétérogènes du fait de l'utilisation de différentes lib dans un même projet.
    J'ai très rarement vu de gens nommer à la C en Java, alors que l'inverse est beaucoup plus fréquent.

  4. #4
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    L'habitude . C'est une mauvaise raison mais c'en est une très courante.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 142
    Points : 89
    Points
    89
    Par défaut
    Le plus troublant c'est le cas des développeurs de boost.
    Ils ont fait le choix de nommer à la C pour faire corps avec la STL (et dans leur cas, faire corps, c'est peu dire). Et pourtant, quand on lit leurs docs, on retrouve des codes où ils nomment à la Pascal, comme si ça les soulageait de pouvoir ENFIN placer des majuscules, comme si en réalité ça les pesait de nommer à la C et que s'ils avaient vraiment eu le choix, ils auraient nommé à la Java.

    Du coup, plus que des questions de goûts esthétiques ou d'habitude, j'ai l'impression que les gens trouvent des défauts à cette notation, que ça les gêne de ne pas pouvoir différencier le nom d'une classe d'un nom de fonction ou de variable (alors que le contexte laisse rapidement peu de doute à ce sujet).

  6. #6
    Membre actif
    Avatar de TheDrev
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    310
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 310
    Points : 263
    Points
    263
    Par défaut
    Avant j'écrivais aussi en CamelCase, mais je suis tombé sur http://www.gnu.org/prep/standards/ht...mes.html#Names en recherchant de la doc sur g++. Je trouve que c'est effectivement plus simple a lire, que cela facilite la frappe a l'aveugle, si on y reflechit, il faut simplement appuyer sur _ au lieu de shift droit ou shifte gauche + la touche voulut...
    all your base are belong to us.

  7. #7
    Membre confirmé

    Inscrit en
    Août 2007
    Messages
    300
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 300
    Points : 527
    Points
    527
    Par défaut
    Les règles de codage datent en général de bien avant la STL (et oui, bien des chefs de projets sont des dinosaures! ).
    Il y a aussi le fait que de nombreuses librairies utilisent CetteConvention, en particulier en environnement Windows.
    Ceci dit, nous avons basculé sur une notation très proche de_celle_ci en 2006 pour tous les nouveaux codes, quel que soit le langage (y compris en électronique / électricité / conception), lors d'un changement d'assurance qualité. Il n'y a pas eu vraiment de résistance en interne, et la plupart de l'équipe apprécie maintenant le gain en lisibilité.
    Ce qui nous a motivé, cependant, était purement lié à des critères de lisibilité, et pas à des questions de cohérence avec telle ou telle librairie de tel ou tel langage (bien que C++ soit très important chez nous, ce n'est pas le seul langage, et la STL est devenue tellement transparente qu'elle se fond pratiquement dans les mots-clés).
    "Maybe C++0x will inspire people to write tutorials emphasizing simple use, rather than just papers showing off cleverness." - Bjarne Stroustrup
    "Modern C++11 is not your daddy’s C++" - Herb Sutter

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 142
    Points : 89
    Points
    89
    Par défaut
    [HS]
    J'ajouterais qu'avec une disposition de clavier évoluée comme celle-ci, l'underscore est accessible avec altgr-espace. Un pur régal geekesque
    [/HS]

  9. #9
    Membre actif
    Avatar de TheDrev
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    310
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 310
    Points : 263
    Points
    263
    Par défaut
    cela doit se configurer sur un clavier normale avec un fichier .map et un peu de typex

    Sinon, il est certains que dans un projet, quel que soit la notation choisie, il faut essayer de rompre avec ses habitudes pour se fondre dans le code existant... rien n'est plus désagréable de coder avec 2 convention en meme temps !
    all your base are belong to us.

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 142
    Points : 89
    Points
    89
    Par défaut
    Citation Envoyé par ac_wingless Voir le message
    une notation très proche de_celle_ci en 2006
    Justement, quelles sont les différences de la variante utilisée par ton entreprise ?

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 142
    Points : 89
    Points
    89
    Par défaut
    Citation Envoyé par TheDrev Voir le message
    Sinon, il est certains que dans un projet, quel que soit la notation choisie, il faut essayer de rompre avec ses habitudes pour se fondre dans le code existant... rien n'est plus désagréable de coder avec 2 convention en meme temps !
    Justement ! Si c'est si désagréable, pourquoi tout le monde choisi une notation différente de la STL ? En effet, à partir de ça on code avec deux conventions différentes en même temps…

  12. #12
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Pour moi: D'une part, pour m'en différentier (ainsi, je vois du premier coup d'oeil que la fonction que j'appelle n'est pas une fonction STL, mais une fonction de mon code ou de Windows), d'autre part, parce que je trouve le CamelCase plus lisible.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  13. #13
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 824
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 824
    Points : 1 544
    Points
    1 544
    Par défaut
    Le principal est d'avoir un nommage uniforme dans l'enceinte de ton espace de nom, et nécessairement dans tous les projets de ton entreprise.

    Se distinguer de "l'extérieur" au niveau du style permet d'avoir un certain "caractère" et biensûr de tout de suite voir si un code provient d'un de tes collègue ou d'un truc récupérer sur le net ou autre.

    Et pour finir, travailler sur un projet C++ avec le style de la STL par exemple, puis on te fait passer sur Java où tu dois te réadapter au style Java... c'est pas terrible terrible.
    "Heureusement qu'il y avait mon nez, sinon je l'aurais pris en pleine gueule" Walter Spanghero

  14. #14
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 064
    Points : 1 053
    Points
    1 053
    Par défaut
    Raisons historiques tout simplement. Pour ce qui est du pourquoi de ces raisons historiques... je dirais que c'est le même problème partout.

    Quel que soit la norme que tu choisis et ses sois-disant avantages (de toutes façon fort subjectifs dans ce cas précis), ceux-ci sont dérisoires par rapport à l'énorme atout d'avoir une seule norme universellement respectée.
    Cela touche des domaines très variés en informatique, cela va du protocole IP au raccourci clavier pour faire un copier-coller, et normalement tout programmeur expérimenté en a plus ou moins conscience.

    L'ennui c'est que ça c'est aujourd'hui. Il y a seulement 20 ans il y avait encore un grand nombre de nos collègues qui ne programmaient pas de façon OS-portable, ni même pour une famille d'OS, ni même pour les ordinateurs d'un constructeur précis, mais pour un modèle précis d'ordinateur. Il y a 20 ans, tout le monde n'utilisait pas forcément IP (un protocole unique pour les communications, à quoi ça sert? En quoi c'est un problème que chacun utilise le sien?). Alors oui, au vu de nos standards actuels, les informaticiens de l'époque étaient vraiment une bande de gros beaufs, mais bon faut faire avec.

  15. #15
    screetch
    Invité(e)
    Par défaut
    je ne suis pas choqué car pour moi la lib standard se rapproche du langage lui meme, et les types sont donc en lowercase (int, float, vector, shared_ptr,etc)
    ca differencie assez bien les choses qui nous appartiennent des choses deja ecrites, finalement.

  16. #16
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 764
    Points : 2 705
    Points
    2 705
    Par défaut
    Citation Envoyé par three minute hero Voir le message
    [HS]
    J'ajouterais qu'avec une disposition de clavier évoluée comme celle-ci, l'underscore est accessible avec alt-espace. Un pur régal geekesque
    [/HS]
    Sauf que sous Windows, ce raccourci clavier est déjà affecté.

  17. #17
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    tech lead c++ linux
    Inscrit en
    Août 2004
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : tech lead c++ linux

    Informations forums :
    Inscription : Août 2004
    Messages : 4 262
    Points : 6 680
    Points
    6 680
    Billets dans le blog
    2
    Par défaut
    En ce qui me concerne, je plussoie les raisons déjà citées,en particulier: différencier, justement, mon code de celui de la STL et de boost (et des autres libs: j'utilise beaucoup de libs C, contraintes de mon environnement professionnel).

    A laquelle je rajouterais:
    . j'utilise CetteNotation pour les fonctions et celleLa pour les variables. Ce qui me permet de différencier les deux, et c'est plus lourd à faire avec cette_notation.
    . j'ai une sainte horreur des '_'. J'ai été traumatisé par les underscores quand j'étais jeune et que j'essayais de comprendre le code de la stl
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

  18. #18
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 824
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 824
    Points : 1 544
    Points
    1 544
    Par défaut
    Après ça ne concerne pas que les noms de variables et les noms de fonctions.

    Y'a les membres, les types de variables, les pointeurs/références, les membres statics, les foncteurs, les templates (surtout si tu fais de la méta programmation), les itérateurs etc...
    "Heureusement qu'il y avait mon nez, sinon je l'aurais pris en pleine gueule" Walter Spanghero

  19. #19
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 142
    Points : 89
    Points
    89
    Par défaut
    @oodini:
    Woops, il s'agit bien sûr d'altgr-espace, j'ai édité le message.

    @tous:
    Merci pour vos réponses, j'y vois un peu plus clair
    Comme beaucoup, j'aime me rattacher à un standard une fois pour toute pour ne plus avoir à y réfléchir. Mais puisqu'il y a tant de bonnes raisons de se différencier de celui de la STL et que presque tout le monde est d'accord pour faire ainsi, je vais peut-être reconsidérer la question !

    Cela dit, continuez à faire part de vos avis, je trouve cela très instructif.

  20. #20
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 142
    Points : 89
    Points
    89
    Par défaut
    Après avoir un peu réfléchi à tout ça, je reviens avec quelques objections :

    Premièrement :
    Dans certains cas d'utilisation de la STL et de Boost, on est forcé de ramener certains noms jusqu'à nos interfaces. Par exemple, si l'on veut faire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    class SuperVector: private std::vector
    {
        public:
            void shuffleContent();
            using std::vector::push_back;
    };
    on se retrouve avec une interface dont le nommage est hétérogène. Certes, l'exemple n'est pas très probant et c'est douteux sur le plan de la conception, mais il y a vraiment des cas où on ne peut y échapper. Par exemple dans Boost.Spirit, sans rentrer dans les détails, on est obligés d'implémenter une classe interne dont le nom est definition, et non Definition.


    Deuxièmement :
    J'ai bien aimé l'argument disant que la STL se fondait un peu dans les mot-clés du langage lui-même (int, double / vector, string). Cependant, il semblerait que les concepts que nous réservent C++0x aient adoptés un nommage CamelCase (tels que InputIterator, OutputIterator). On aura donc du CamelCase dans la STL. Comment différencier d'un coup d'œil un concept de la STL avec une classe maison si un using namespace std est présent ?
    Par ailleurs, quelle convention pensez-vous adopter pour vos concepts ?

Discussions similaires

  1. Quel framework PHP utilisez-vous et pourquoi ?
    Par Lana.Bauer dans le forum Bibliothèques et frameworks
    Réponses: 194
    Dernier message: 04/02/2014, 14h33
  2. Pourquoi n'utilisez vous pas SAP BI
    Par Bill54 dans le forum Approche théorique du décisionnel
    Réponses: 38
    Dernier message: 04/12/2013, 16h24
  3. [Templates] Quel système utilisez-vous ? Pourquoi ?
    Par narmataru dans le forum Bibliothèques et frameworks
    Réponses: 270
    Dernier message: 26/03/2011, 00h15
  4. Quelle version d'Eclipse utilisez-vous ? Pourquoi ?
    Par Ricky81 dans le forum Eclipse
    Réponses: 54
    Dernier message: 28/08/2006, 09h10
  5. [langage] Pourquoi utilisez-vous Perl ?
    Par R3iTt0R dans le forum Langage
    Réponses: 10
    Dernier message: 23/06/2004, 14h17

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