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 :

Déclaration de variables en début de fonctions ou non ?


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Inscrit en
    Octobre 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Octobre 2006
    Messages : 2
    Par défaut Déclaration de variables en début de fonctions ou non ?
    J’ai eu une discussion avec un collègue qui prétend que déclarer les variables ailleurs qu’en début de fonction en C++ (éventuellement au début d’un bloc) est une mauvaise pratique.

    Cela réduirait la compressibilité du code et serait même incompatible avec certains compilateurs.

    Qu’en pensez-vous ?

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par ginchen
    Qu’en pensez-vous ?
    qu'il a gardé ses vieux réflexes de codeur C...


    si le code est bien organisé, non, ca ne réduit pas la lisibilité... mais bon, la qualité, c'est un tout. il ne suffit pas de nommer les variables au bon endroit si on leur donne un nom pourri et qu'on ne les initialise pas d'un autre coté par exemple...

  3. #3
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Regarde cette discussion :
    http://www.developpez.net/forums/sho...d.php?t=215405

    Notemment à partir du post 7...

  4. #4
    Membre Expert
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Par défaut
    Citation Envoyé par toxcct
    qu'il a gardé ses vieux réflexes de codeur C...
    On dirait.

    Cela réduirait la compressibilité du code et serait même incompatible avec certains compilateurs.
    Le C++ permet de le faire, ce qui est bien pratique comparé au C, pas d'incompatibilité connue.

    Bienvenu sur le forum www.developpez.net en tout cas

  5. #5
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Citation Envoyé par ginchen
    J’ai eu une discussion avec un collègue qui prétend que déclarer les variables ailleurs qu’en début de fonction en C++ (éventuellement au début d’un bloc) est une mauvaise pratique.
    Je pense exactement l'inverse: définir des variables ailleurs qu'à l'endroit où on peut les initialiser de manière sensée alors qu'on pourrait le faire est une mauvaise pratique.

    Cela réduirait la compressibilité du code
    Je ne comprends même pas l'argument. Ce que je comprends ne me semble avoir aucun rapport.

    et serait même incompatible avec certains compilateurs.
    C'est autorisé en C++ depuis au moins 1984... je doute qu'il y ait des compilateurs qui ne le supporte pas. (Ce n'est pas possible en C90 mais bien en C99, c'est peut-être ce qui induit ton collègue en erreur?)

  6. #6
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    J’ai eu une discussion avec un collègue qui prétend que déclarer 
    les variables ailleurs qu’en début de fonction en C++ 
    (éventuellement au début d’un bloc) est une mauvaise pratique.
    Déclarer ensemble toutes les variables dans la même zone en début de foncion améliore la lisibilité du code. J'aurais tendance à être 100% d'accord avec ce collégue, d'autant plus qu'il admet d'éventuelles déclarations en début de bloc. Il faut penser à ce que le code peut être partagé avec des personnes qui justement pratiquent de la sorte.

    D'ailleurs, Pascal (et delphi) imposent cette "bonne" pratique.

  7. #7
    Invité
    Invité(e)
    Par défaut
    donc si je résume Graffito, t'es un Codeur C !?

  8. #8
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Citation Envoyé par Graffito
    Déclarer ensemble toutes les variables dans la même zone en début de foncion améliore la lisibilité du code.
    S'il y a une différence de lisibilité (dans un sens ou dans l'autre), c'est que la fonction est trop grande.

    Mettre les définitions aux endroits où on peut faire l'initialisation est tout d'abord obligatoire pour certaines classes qui n'ont pas de constructeur par défaut.

    Mettre les définitions aux endroits où on peut faire l'initialisation permet de mettre plus de variables const. Ce qui est une bonne chose.

    Mettre les définitions aux endroits où on peut faire l'initialisation et retarder celle-ci au maximum, c'est garder les définitions proches des utilisations et préparer la découpe de la fonction quand elle aura grossit. On n'aura pas alors à chercher si une variable est utilisée dans le bloc qui précède et si c'est bien pour le même usage.

  9. #9
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Bonjour,

    Je suis un codeur C++ occasionel et un codeur Delphi régulier. Je participe parfois à la maintenance de code C++ et je suis personellement géné par des déclarations non regroupées.

    Mais, j'ai aussi constaté que lors de debuging avec les créateurs du code que le fait de disséminer les variables arrivait à masquer des anomalies/problèmes que l'on aurait pu détecter plus facilement si les déclarations de variables avaient été regroupées.

    Toutefois, je conçois que les avis puissent diverger sur le sujet et les arguments de Jean-Marc Bourguet sont parfaitement recevables.

    En fait, la discussion révéle indirectement un des défauts de C et C++ : pas de fonction locale à l'intérieur d'une fonction.

  10. #10
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    Déclarer une variable appelle son constructeur, puis faire un assignement appelle son opérateur d'assignement.
    Alors que si on l'initialise direct, on fait simplement un appel au constructeur.
    De plus des types ne supportent pas l'assignement et nécessitent d'être construits avec des paramètres appropriés.

    Bref déclarer en début de bloc, c'est uniquement possible pour les types de base.

  11. #11
    Nouveau candidat au Club
    Inscrit en
    Octobre 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Octobre 2006
    Messages : 2
    Par défaut
    Merci pour vos réponses, ça va dans le sens de mon opinion, mais devant la conviction de mon collègue, je préférais avoir d’autres avis.

Discussions similaires

  1. Réponses: 2
    Dernier message: 02/02/2009, 12h09
  2. déclaration des variables dans une fonction
    Par kawther dans le forum Débuter
    Réponses: 4
    Dernier message: 22/10/2008, 01h17
  3. Déclaration de variables et fonctions
    Par amtdev dans le forum Langage
    Réponses: 2
    Dernier message: 17/08/2008, 12h09
  4. Déclaration de variables communes à toutes les procédures ou fonctions
    Par Godzestla dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 14/05/2008, 08h49
  5. Réponses: 7
    Dernier message: 18/05/2007, 14h11

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