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 :

Bonnes pratiques (et/ou convention) pour commenter son code C++


Sujet :

C++

  1. #21
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 275
    Points : 10 985
    Points
    10 985
    Par défaut
    Pour doxygen.
    Beaucoup de tags sont totalement inutiles et alourdissent une doc qui est déjà bien assez illisible => ouste les @class, @fn, @enum, @type, etc. Et même @brief je l'ai viré pour exploiter à la place l'option auto-brief.
    Au sujet de @param et @return, je vous invite à regarder la doc générée, vous verrez que toutes les décorations qui font bien dans votre EDI qui ne colore pas correctement la doc doxygen sont de trop dans les résultats (=> pas de ':', '-', '\b', ...)
    Koala a listé les principales choses à remplir dans des commentaires doxygen, et je rajouterai les groupes. Ils permettent d'organiser la doc en unités cohérentes, et de fait de la rendre exploitable.

    Je suis également à 100% derrière Koala au sujet des accesseurs et mutateurs. Ce ne sont pas des outils d'encapsulation, mais de décapsulation. Au final, ils sont là pour violer la loi de Déméter.
    Quant à l'histoire de maintenabilité.... c'est du pipeau! Commencez par réfléchir en services, après vous verrez combien de fois le contenu des soit disant setter/getter change véritablement.
    Et puis, je vous renvoie aussi à la prose d'Emmanuel Deloget à ce sujet. La question du nommage qui ne correspond pas à ce qui est fait est également très importante: set != checkThenSetIfOK.

    PS: @LinuxUser tes getters ne sont pas const-corrects.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  2. #22
    Membre émérite
    Avatar de white_tentacle
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Points : 2 799
    Points
    2 799
    Par défaut
    C’est bizarre ce débat perpétuel sur les getter/setter alors que ce concept même devrait être ultra-limité :
    - soit mon objet est juste un conteneur de données, et dans ce cas tout est public
    - soit c’est un objet métier, et dans ce cas, le concept de getter/setter est une très mauvaise abstraction (cf le message de koala)

    Sinon, personnellement je mets les commentaires doxygen dans les headers, et par contre, je commente le code c++ à toute «*siouxerie*», chose «*non-intuitive*», ou simplement un détail nécessaire (par exemple, dire qu’on utilise tel algorithme plutôt qu’un autre, notifier la fin d’une section critique…).

  3. #23
    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
    Citation Envoyé par white_tentacle Voir le message
    C’est bizarre ce débat perpétuel sur les getter/setter
    Je pense que c'est parce que c'est une notion qui est différente selon les langages. Par exemple, en c#, on ne parle pas de variables membres, mais de propriétés d'une classe, et ces propriétés sont "automatiquement" exposées (le code de leurs accesseurs/mutateurs sont générés automatiquement lors de leur création). En java il y a une mécanique du même type si je me souviens bien.
    Du coup ça génère des ambiguités.

    Il y a aussi le fait que ce n'est jamais tout noir ni tout blanc. Certains considèrent que begin() et end() (fonctions qui retournent des itérateurs) sont des accesseurs, par exemple.
    « 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

  4. #24
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 275
    Points : 10 985
    Points
    10 985
    Par défaut
    C'est perpétuel car de façon directe ou indirecte, c'est ce qui est enseigné. Pour trop, encapsulation veut dire ne pas exposer directement les données et donc les rendre accessible via une paire de fonctions. Et donc régulièrement on corrige ces mauvais réflexes.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  5. #25
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 612
    Points : 30 612
    Points
    30 612
    Par défaut
    Citation Envoyé par r0d Voir le message
    Il y a aussi le fait que ce n'est jamais tout noir ni tout blanc. Certains considèrent que begin() et end() (fonctions qui retournent des itérateurs) sont des accesseurs, par exemple.
    ...parce qu'ils correspondent, effectivement, à une notion de service attendus de la part des classes qui les exposent.

    Nous les trouvons, généralement, dans le cas de collections d'objets / de données, et il faut bien être en mesure de les récupérer, vu que cela fait partie intégrante du rôle d'un conteneur
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  6. #26
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 612
    Points : 30 612
    Points
    30 612
    Par défaut
    Citation Envoyé par Luc Hermitte Voir le message
    Koala a listé les principales choses à remplir dans des commentaires doxygen, et je rajouterai les groupes. Ils permettent d'organiser la doc en unités cohérentes, et de fait de la rendre exploitable.
    Oui, je les avais oubliés, tiens... Et pourtant, je les utilise de manière systématique (enfin, quand le projet est prévu pour )
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

Discussions similaires

  1. [FAQ] Retrait de l'entrée "Comment utiliser le mot-clé 'with' pour clarifier son code"
    Par SylvainPV dans le forum Contributions JavaScript / AJAX
    Réponses: 2
    Dernier message: 14/11/2013, 13h21
  2. Réponses: 7
    Dernier message: 23/09/2013, 15h49
  3. [JavaScript] [Correction] Comment utiliser le mot-clé 'with' pour clarifier son code ?
    Par Bisûnûrs dans le forum Contribuez
    Réponses: 4
    Dernier message: 08/04/2010, 17h48
  4. Faut-il commenter son code source pour le rendre plus lisible et maintenable ?
    Par mayayu dans le forum Débats sur le développement - Le Best Of
    Réponses: 149
    Dernier message: 09/11/2009, 02h30

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