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 :

Code Source - Bonne pratique


Sujet :

C

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Code Source - Bonne pratique
    Bonjour,

    Je debute en C, et un des premiers exercice que je me suis fixe est d'ecrire une fonction qui me recupere une valeur d'un fichier de conf et me la retourne sous forme de string.

    Le fichier de conf est du type :
    name1=value1
    name2=value2

    Je voulais savoir si ce code vous paraissait propre, comment je pourrai l'ameliorer, et ce que je dois a tout prix eviter de faire.

    Par exemple ceci ne me plait pas vraiment :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sValue = sName+strlen(sName)+1;
    Merci beaucoup de vos reactions.

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    char *getconf(char *name)
    {
            FILE *fichier;
            char sLine[1024];
            char *sName;
            char *sValue;
     
            // Ouvre le fichier en lecture seule
            fichier = fopen(CONFFILE, "r");
            if (fichier == 0)
            {
                    printf("Erreur : Fichier de configuration %s introuvable.", CONFFILE);
                    exit(1);
            }
     
            // On boucle ligne par ligne jusqu'a la fin du fichier
            while(NULL != fgets(sLine, (int) sizeof sLine, fichier))
            {
                    if (strchr(sLine, '=') != NULL)
                    {
                            sName = sLine;
                            sprintf(strchr(sName, '='), "%s", "\0");
                            if (strcmp(sName, name) == 0)
                            {
                                    sValue = sName+strlen(sName)+1;
                                    return(sValue);
                            } else {
                                    continue;
                            }
                    } else {
                            continue;
                    }
            }
            sValue = "";
            return(sValue);
    }

  2. #2
    Membre chevronné
    Avatar de Anthony.Desvernois
    Homme Profil pro
    Ingénieur sécurité & risque
    Inscrit en
    Juin 2007
    Messages
    1 489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur sécurité & risque
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 489
    Points : 2 244
    Points
    2 244
    Par défaut
    Salut

    Plusieurs choses :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if (fichier == 0)
    {
        printf("Erreur : Fichier de configuration %s introuvable.", CONFFILE);
        exit(1);
    }
    =>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if (!fichier)
    {
       perror("Fichier de configuration");
       exit(1);
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while(NULL != fgets(sLine, (int) sizeof sLine, fichier))
    =>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while (fgets(sLine, sizeof (sLine), fichier))

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (strchr(sLine, '=') != NULL)
    =>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (strchr(sLine, '='))
    Même remarque pour strcmp hein

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sValue = sName+strlen(sName)+1;
    Aère le code, mets des espace autour des opérateurs

    Les accolades du while ne sont pas utiles, perso les } else { je trouve ca bof, mais bon...

    Sinon tu aurais pu utiliser scanf (3).

    Tu devrais aussi initialiser tes variables...

  3. #3
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Points : 28 129
    Points
    28 129
    Par défaut
    Bonjour,

    Il n'existe pas de règles de codage absolues. Certains te diront d'écrire plutôt :

    et d'autres plutôt

    Chacun a des arguments dans un sens, dans l'autre, et personne n'a vraiment ni tort ni raison.

    Regarde tout de même l'échelle de goret, ca donne de très bons conseils. Je te conseil d'ailleurs de lire tout le site d'Emmanuel, il est de très bon conseil.
    Sinon, je t'encourrage aussi à lire les cours de C hébergés par developpez.

Discussions similaires

  1. Réponses: 4
    Dernier message: 02/02/2010, 23h49
  2. [DOM] Bonnes pratiques pour garder le code propre
    Par The Vandals dans le forum Général JavaScript
    Réponses: 21
    Dernier message: 26/11/2008, 15h49
  3. Réponses: 4
    Dernier message: 07/10/2008, 14h16
  4. outil pratique code source C
    Par oneonly dans le forum Choisir un environnement de développement
    Réponses: 3
    Dernier message: 17/06/2008, 12h32
  5. Bonne pratique pour inclure source de projet open source ?
    Par joseph_p dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 05/07/2007, 21h51

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