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 :

Echelle de Goret


Sujet :

C

  1. #101
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    L'initialisation doit se faire à la déclaration ou immédiatement après pour éviter tout risque de comportement indéterminé.

  2. #102
    Rédacteur

    Profil pro
    Étudiant
    Inscrit en
    Juin 2004
    Messages
    113
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2004
    Messages : 113
    Par défaut
    Citation Envoyé par seriousme
    Si on l'utilise par inadvertance il y a risque de comportement indéfini.
    C'est une sécurité.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int a;
    printf("%d",a);
    oui, ce cas me parait trivial
    On oublie l'initialisation surtout dans des cas comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    int s;
    int i;
    for(i=0;i<5;i++) s+=i;

    Donc, si j'ai bien comprit ce que Emdel voulait dire, "Mieux vaut intialiser les variables tout le temps, que de se demander qd faut-il le faire"

  3. #103
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par AjJi
    Toutes les variables du programme doivent être initialisés ?
    Je n'ai jamais dit ça.

    'utilisation' signifie 'accès en lecture et utilisation de la valeur lue'.
    Personnelement, je n'initialise que les compteurs, ou des variables qui vont contenir des sommes, produits, ... mais pas toutes, je peux savoir en quoi ca pourrait être "dangereux" de ne pas tout initialiser ?

  4. #104
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par AjJi
    Donc, si j'ai bien comprit ce que Emdel voulait dire, "Mieux vaut intialiser les variables tout le temps, que de se demander qd faut-il le faire"
    Pas du tout, et cette pratique pourrait valoir une Force 2 ou 3 selon mon humeur

  5. #105
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par seriousme
    L'initialisation doit se faire à la déclaration ou immédiatement après pour éviter tout risque de comportement indéterminé.
    Pas forcément. Attention à ne pas déformer mes intentions.

  6. #106
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Pas forcément
    Autant que possible ça évite des soucis, notamment avec les pointeurs:
    mieux vaut un pointeur initialisé à NULL qui fait planter qu'un autre non initialisé qui fait insidieusement croire que tout va bien.

  7. #107
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par seriousme
    Autant que possible ça évite des soucis, notamment avec les pointeurs:
    mieux vaut un pointeur initialisé à NULL qui fait planter qu'un autre non initialisé qui fait insidieusement croire que tout va bien.
    OK. Mais ça dépend comment est organisé le code. En principe on évite de faire 2 écritures consécutives sans une lecture entre les deux..

    Mais bon, c'est pas faux, c'est juste redondant...

  8. #108
    Membre chevronné Avatar de Jack_serious
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    350
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 350
    Par défaut
    Ca peut servir quand meme.

    Pour une fonction de liberation des ressources par exemple. Comme ca on ne libere que ce qui a deja ete alloue, i.e. les pointeurs non nuls.

    Pratique pendant une initialisation, ca evite de faire une serie de free() pour chaque erreur possible. On ne libere que ce que a deja ete alloue.

    Dans ce cas on fait deux ecriture consecutives sans lecture, mais ca simplifie le code.

  9. #109
    Membre Expert Avatar de gnto
    Homme Profil pro
    Ingénieur système logiciel
    Inscrit en
    Janvier 2006
    Messages
    923
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur système logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2006
    Messages : 923
    Par défaut
    que pensez vous de l'usage abusif de Macros
    Bon aller je balance


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #define FLOAT 0x0001
    #define SHORT 0x0002
    #define CHAR 0x0003
    #define STRING 0x0004
    .
    .
    .


    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
    17
    18
    19
    20
    21
    22
    23
     
    int type;
    ...
    switch (type)
    {
    #define BELLE_MACRO(TYP,VAR1,VAR2,MACRO)  \
        case TYP:  \
            {  \
                ... \
            }  \
            break;
        case CHAR:
        case STRING:
            break;
            BELLE_MACRO(SHORT,  var1,  var2,  SHORTMACRO)
            BELLE_MACRO(FLOAT,  var1,  var2,  FLOATMACRO)
            .
            .
            .
        default:
            fprintf(stderr,"error invalid type\n");
    #undef BELLE_MACRO
    }
    voila je l'ai simplifié en espérant que ca puisse compiler bien que je n'ai pas définie SHORTMACRO et FLOATMACRO mais le plus important n'est-il pas d'admirer ?

  10. #110
    Membre Expert
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Par défaut
    On peut utiliser #define en plein milieu de fonction??

    Sinon j'ai deja vu des mega macros (une 20aine de lignes, peut être plus) dans le code source de PHP
    Dans ces cas là, c'est mieux une fonction inline

  11. #111
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Gruik
    On peut utiliser #define en plein milieu de fonction??
    Pourquoi pas ? Le préprocesseur n'a pas de contrainte particulière à part une organisation par ligne plutôt que par token...

    Je remarque qu'ici, c'est bien fait, car la définition est 'temporaire' (#undef).
    Sinon j'ai deja vu des mega macros (une 20aine de lignes, peut être plus) dans le code source de PHP
    Dans ces cas là, c'est mieux une fonction inline
    En C99, c'est sûr. Sinon, on fait comme on peu...

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 400
    Par défaut
    Enfin, il y a des choses qu'une fonction inline ne peut pas faire:
    Par exemple, des déclarations.

    Ou bien, à des fins d'affichage, débogage ou journalisation:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #define CASENAME(x) case x: sczRet= #x ; break;
     
    char const * SomeConstantToString(int someConstant)
    {
    char const *sczRet = "(inconnu)";
     
    switch(someConstant)
    	{
    	CASENAME(UNE_CONSTANTE)
    	CASENAME(UNE_AUTRE_CONSTANTE)
    	}
    return sczRet;
    }
    Evidemment, en C++, on peut utiliser un tableau associatif, mais des macros peuvent là encore être utiles pour l'initialiser...
    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. #113
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Par défaut
    Citation Envoyé par Médinoc
    Enfin, il y a des choses qu'une fonction inline ne peut pas faire:
    Par exemple, des déclarations.


    Mais de toutes façon le mot clés inline n'est qu'une indication pour le compilateur, il n'est pas obligé d'en tenir compte.

  14. #114
    Membre Expert Avatar de gnto
    Homme Profil pro
    Ingénieur système logiciel
    Inscrit en
    Janvier 2006
    Messages
    923
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur système logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2006
    Messages : 923
    Par défaut
    perso des macros qui generent des cas je trouve ca moche.
    C'est pas bon pour fluidifié la lisibilté. Pour 4 cases c'est pas la peine.
    C'est pas comme si y'en avais 256

  15. #115
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par gnto
    perso des macros qui generent des cas je trouve ca moche.
    C'est pas bon pour fluidifié la lisibilté. Pour 4 cases c'est pas la peine.
    C'est pas comme si y'en avais 256
    Dans ce cas, je travaille par liste externe... (.itm)

    http://emmanuel-delahaye.developpez.com/clib.htm

  16. #116
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 400
    Par défaut
    Citation Envoyé par gnto
    perso des macros qui generent des cas je trouve ca moche.
    C'est pas bon pour fluidifié la lisibilté. Pour 4 cases c'est pas la peine.
    C'est pas comme si y'en avais 256
    Je pensais justement à des trucs bien nombreux, comme les Window Messages (pour du débuggage) ou les constantes d'erreur (en complément de FormatMessage())

    Emmanuel : Tiens, c'est une idée... Une bonne idée, même...
    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.

  17. #117
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Médinoc
    Emmanuel : Tiens, c'est une idée... Une bonne idée, même...
    Tu parles des .itm ? Oui, il y a des moments où il faut laisser le préprocesseur travailler. Il écrit le code répétitif sans se tromper, lui...

  18. #118
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 131
    Par défaut
    je viens de lire lechelle de Goret et je pense que c'est l'une des premieres chose a apprendre a tous programmeur. Quand je vois des fonction qui font plus de 300 lignes avec comme commentaire ce que fait la fonction et que l on doit les étudier .... on a presque envie de tuer celui qui a fait le code ^^.
    Le pire c est que tout le monde (aussi bien les novices que les experts font ce genre d erreurs).

  19. #119
    Membre chevronné Avatar de Jack_serious
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    350
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 350
    Par défaut
    Citation Envoyé par berg
    je viens de lire lechelle de Goret et je pense que c'est l'une des premieres chose a apprendre a tous programmeur. Quand je vois des fonction qui font plus de 300 lignes avec comme commentaire ce que fait la fonction et que l on doit les étudier .... on a presque envie de tuer celui qui a fait le code ^^.
    Le pire c est que tout le monde (aussi bien les novices que les experts font ce genre d erreurs).
    Les fonctions de 300 lignes ? Ah non surement pas...

    Parce que c'est pas seulement chiant pour le mec qui va relire le code, ca l'est surtout pour toi quand tu developpe et que tu dois debugguer.

    Faire du code bien structure est la premiere chose a apprendre.

  20. #120
    Membre Expert Avatar de gnto
    Homme Profil pro
    Ingénieur système logiciel
    Inscrit en
    Janvier 2006
    Messages
    923
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur système logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2006
    Messages : 923
    Par défaut
    Citation Envoyé par Jack_serious
    Les fonctions de 300 lignes ? Ah non surement pas...

    Parce que c'est pas seulement chiant pour le mec qui va relire le code, ca l'est surtout pour toi quand tu developpe et que tu dois debugguer.

    Faire du code bien structure est la premiere chose a apprendre.
    Et l'inverse c'est chiant plein de petite focntion moins de 15 lignes. argg...

Discussions similaires

  1. [PHP 5.4] conception squelette objet : quelle note sur l'echelle du goret?
    Par balja dans le forum Langage
    Réponses: 2
    Dernier message: 05/02/2013, 14h21
  2. [excel] echelle dynamique dans un graph
    Par shirya dans le forum Excel
    Réponses: 1
    Dernier message: 17/10/2005, 18h49
  3. [JTree] Echelle
    Par Micky1407 dans le forum Composants
    Réponses: 1
    Dernier message: 18/07/2005, 14h11
  4. echelle et openGl
    Par pfourtz dans le forum OpenGL
    Réponses: 13
    Dernier message: 04/05/2005, 00h00
  5. Réponses: 2
    Dernier message: 17/05/2002, 21h37

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