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 :

Un programme sûrement "salement" écrit sur le problème du sac à dos


Sujet :

C++

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Eure et Loir (Centre)

    Informations forums :
    Inscription : Septembre 2013
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Un programme sûrement "salement" écrit sur le problème du sac à dos
    Bonjour,

    Tout d'abord je suis nouveau donc je me présente.
    HATTRY Jean-Athanase, étudiant en école d'ingénieur 21ans.

    Je ne vais pas y aller par quatre chemins, je suis sensé avoir eu des cours de c++ lors de ma seconde année en école d'ingénieur sauf que le prof a décidé d'enseigner le complément des bases du c++ sans donner les bases car trop trivial pour lui (pas besoin d'ajouter que personne avait fait de c++ avant, du coup on n'a rien compris) j'ai donc appris le c++ avec le net de mon côté et vu les réponses que j'ai pu lire lorsque je cherchais des réponses à des problèmes visiblement ma façon de programmer n'est pas bonne car on ne m'a pas appris à le faire correctement.

    Je vais en venir aux faits. J'ai programmé un programme pour résoudre le problème du sac à dos sur demande d'un autre prof. Celui-ci fonctionne actuellement mais j'aimerais progresser dans la manière de programmer pour faire des programmes "propres". Le soucis ne sera ici pas le fond mais la forme, je suis conscient que la méthode de résolution n'est pas optimale mais le prof souhaite que je procède de cette manière pour résoudre le problème.

    je vous met en lien le projet en entier sous forme de fichier .rar et je vais mettre le main sous balise C++ ci-dessous.

    http://www.fichier-rar.fr/2014/10/08/sac-a-dos/

    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    #include <iostream>
    #include "main.h"
     
    using namespace std;
     
    int main()
    {
     
     
        cout << "Bonjour et bienvenue sur ce programme de resolution du probleme du sac a dos" << endl << endl;
     
        int n = -1;
        int capa = -1;
        cout << "Combien d'objets possedez-vous?";
        while(!(cin >> n) || n<0)
        {
            cout << "Combien d'objets possedez-vous?";
            cin.clear();
            cin.ignore(1000,'\n');
        }
     
        cout << "Quelle est la capacite de votre sac?";
        while(!(cin >> capa) || capa<0)
        {
            cout << "Quelle est la capacité de votre sac?";
            cin.clear();
            cin.ignore(1000,'\n');
        }
     
        double profit [n];
        double volume [n];
        cout << "Pour la selection, veuillez entrer le profit espace volume : profit volume" << endl;
        cout << "Veuillez entrer vos objets :" << endl;
        bool test = true;
        for (int i = 0; i < n ; i++)
        {
            test = false;
            while(!test)
            {
                cout << i+1 << " : ";
                cin >> profit[i] >> volume[i];
                if (profit [i]<1 || volume [i]<1 || cin.eof())
                {
                    cin.clear();
                    cin.ignore(1000,'\n');
                    test = false;
                    cout << "Veuillez entrer des donnees positives!";
                }
                else test = true;
            }
        }
        int tab[n];
        for(int i=0;i<n;i++) tab[i]=0;
        initiale(profit,volume,tab,n,capa);
        metaheuri(profit,volume,tab,n,capa);
     
        cout << endl << "La solution trouve est :" << endl;
        cout << "Profit : " << somme(profit,n,tab) << endl;
        cout << "Volume occupe : " << somme(volume,n,tab) << endl;
     
        int k = 1;
     
        for(int i=0 ; i<n ; i++)
        {
            if(tab[i]==1)
            {
                cout << k << " : " << profit[i] << " " << volume[i] << endl;
                k++;
            }
        }
    }
     
    int somme(double *tab,int n,int *tab2)
    {
        int total=0;
        for(int i=0 ; i<n ; i++) total=total+tab[i]*tab2[i];
        return total;
    }
     
    void initiale(double profit[], double volume[], int tab[], int n, int capa)
    {
        double division[n];
        for(int i=0; i<n; i++)
        {
            division[i]=profit[i]/volume[i];
        }
        bool tab_en_ordre = false;
        double tampon[3];
        while(!tab_en_ordre)
        {
            tab_en_ordre=true;
            int taille=n;
            for(int i=0;i<taille-1;i++)
            {
                if(division[i]<division[i+1])
                {
                    tampon[0]=profit[i+1];
                    tampon[1]=volume[i+1];
                    tampon[2]=division[i+1];
     
                    profit[i+1]=profit[i];
                    volume[i+1]=volume[i];
                    division[i+1]=division[i];
     
                    profit[i]=tampon[0];
                    volume[i]=tampon[1];
                    division[i]=tampon[2];
     
                    tab_en_ordre=false;
                }
            }
            taille--;
        }
        bool tab_ini = false;
        int j=0;
        while(!tab_ini)
        {
            tab[j]=1;
            if(somme(volume,n,tab)>capa)
            {
                tab[j]=0;
                tab_ini=true;
            }
            else j++;
        }
    }
     
    void voisinage(double volume[],int tab[],int n, int capa)
    {
        //rand()%c fait un random entre 0 et c
        bool test=false;
        int c,j=0;
        while (!test || j<50)
        {
            c = rand() % n;
            tab[c]=pow((tab[c]-1),2);
            if(somme(volume,n,tab)>capa)
            {
                tab[c]=pow((tab[c]-1),2);
                j++;
            }
            else test = true;
        }
    }
     
    void metaheuri(double profit[],double volume[],int tab[],int n,int capa)
    {
        int solu[n];
        for(int i=0;i<n;i++) solu[i]=tab[i];
        for (int i=0; i<MAX;i++)
        {
            voisinage(volume,tab,n,capa);
            if(somme(profit,n,tab)>somme(profit,n,solu))
            {
                for(int j=0 ; j<n ; j++) solu[j]=tab[j];
            }
            else
            {
                for(int j=0 ; j<n ; j++) tab[j]=solu[j];
            }
        }
        for(int i=0;i<n;i++) tab[i]=solu[i];
    }
    Si vous avez de quelconques questions je tenterais d'y répondre.

    Merci d'avance pour vos réponses ainsi que votre indulgence.

    Bonne soirée.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 068
    Points : 12 111
    Points
    12 111
    Par défaut
    Fonctions trop longue car il y a beaucoup de copier-coller.
    => Faire plus de fonction

    Pas d'utilisation de la POO
    Utilisation de pointeur totalement injustifié
    Utilisation de tableau à la C

    Gestion des entrées (cin.ignore ...) trop lourde et non factorisée.

    Non utilisation des itérateurs à la place des "for i".
    Non utilisation des algorithmes de la STL qui simplifierait grandement le code.

    En gros votre code, c'est du C99 (pour la non pré-déclaration des variables) avec des flux cin et cout.

  3. #3
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    734
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 734
    Points : 1 475
    Points
    1 475
    Par défaut
    Un exemple de copier-coller: vous avez deux boucles pour la saisie d'un entier positif, qui ne diffèrent que par le message de l'invite. Dans tous les cas de ce genre, au lieu d'écrire deux (ou plus) fois la même chose il faut écrire une fonction et appeler la fonction autant de fois que nécessaire.
    Deux avantages:
    • factorisation:
      le code n'est écrit qu'une fois, donc il ne faut le débugger qu'une fois. S'il doit évoluer on ne le fait évoluer qu'une fois. Plus de risque d'avoir une coquille à chaque fois qu'on s'en sert.
    • lisibilité:
      • la fonction principale en est raccourcie, on en suit plus facilement le déroulement
      • le nom de la fonction appelée permet d'expliciter sa fonction, donc on comprend plus vite ce que fait le code


    Concernant l'usage des pointeurs, il permet un appel défectueux à la fonction de sommation (n faux par rapport à la taille réelle des tableaux, pointeur sur n'importe quoi...). En C++, on recommande d'utiliser pour gérer des tableaux à taille variable la classe std::vector (inclure le header <vector>) qui permet de passer par référence l'objet tableau. n n'a plus besoin d'être passé puisque le tableau gère lui-même sa taille et fournit des itérateurs pour le parcourir (voir référence std::vector). Par ailleurs la nature du paramètre est plus claire: c'est sans ambiguïté un tableau.
    Par ailleurs, une fonction qui fait la somme d'un tableau devrait demander une référence constante (marqueur const) au tableau de manière à garantir et documenter le fait que ce tableau ne sera pas modifié.

    Par ailleurs, il faut prendre l'habitude de nommer correctement les éléments.
    Ça peut paraître anodin sur un code aussi compact, mais la fonction somme...ne fait pas une somme, mais une somme pondérée. De même, tout nom de type tab, tab2 ou toto, toto2 doit t'amener à te demander: que sont mes paramètres? Le nom doit refléter ce à quoi ils servent. Si tu ne peux pas leur donner un nom explicite, c'est que tu ne sais pas à quoi ils servent...et c'est dangereux pour toi. Même le fameux nom i dans une boucle respecte cette logique: c'est par convention le nom d'un index en cas d'itération. Ceci dit, si tu commence à imbriquer des boucles ou à avoir plusieurs indices il est chaudement recommandé de les nommer en fonction de leurs significations respectives.
    Dans le cadre d'un code aussi compact ça peut sembler anodin, mais sur une base de code plus conséquente ça peut sensiblement compliquer la tâche à qui reprend ce code. Y compris toi si tu as passé quelque temps sur une autre tâche et dois te remettre la logique en tête pour faire une modification.

  4. #4
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 94
    Points : 122
    Points
    122
    Par défaut
    Je rajouterais au passage: il ne faut pas hésiter à rajouter davantage de commentaires, que ce soit pour décrire les entrées/sorties de chaque fonction, les namespaces/classes/attributs/etc..., et aussi aux endroits chauds où il y a des passages très techniques (genre manipulation brute de tableaux par exemple) pas forcément compréhensible au premier abord. Pense au développeur suivant, ou bien à toi dans plusieurs mois (je pense que c'est arrivé au moins une fois à tout le monde de ne plus savoir ce que l'on voulait faire dans telle ou telle fonction )

  5. #5
    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
    Salut,
    Citation Envoyé par Boumbata Voir le message
    Je rajouterais au passage: il ne faut pas hésiter à rajouter davantage de commentaires, que ce soit pour décrire les entrées/sorties de chaque fonction, les namespaces/classes/attributs/etc..., et aussi aux endroits chauds où il y a des passages très techniques (genre manipulation brute de tableaux par exemple) pas forcément compréhensible au premier abord. Pense au développeur suivant, ou bien à toi dans plusieurs mois (je pense que c'est arrivé au moins une fois à tout le monde de ne plus savoir ce que l'on voulait faire dans telle ou telle fonction )
    Alors, là... NON!!!
    Je suis tout à fait d'accord avec le fait que les commentaires à visée pédagogique sont nécessaires pour faciliter l'apprentissage. Mais ce n'est pas une raison pour inciter les gens à mettre des commentaires partout!

    La seule source d'information de quelqu'un qui lit le code (en dehors des éventuels cartouches explicatives et / ou permettant la génération automatique de documentation), ca doit être le code lui-même.

    Les commentaires dans le code d'une fonction ont en effet la très fâcheuse manie de souffrir d'obsolescence récurrente, et donc de faire croire au lecteur que le code fait quelque chose qu'il ne fait en réalité plus.

    Pour rendre un code compréhensible, il n'y a pas de miracle. Mais le respect de quelques règles y arrive comme "par magie"
    1. Respecter le principe de la responsabilité unique : créer dix petites fonctions de quelques lignes qui ont un but bien précis sera beaucoup plus lisible que de créer une grande fonction de 10 fois plus de lignes qui s'occupe de faire le ménage, la vaisselle, le café avant de sortir le chien ;
    2. Définir et respecter des conventions de nommage stricte : on s'y retrouve beaucoup plus facilement lorsqu'il est facile de faire la différence entre le nom d'un type défini par l'utilisateur, celui d'une variable et celui d'une fonction ;
    3. Choisir des noms (de variables, de fonction, de types définis par l'utilisateur) explicite : l'appel à la fonction calculerTotalTvaComprise permet beaucoup plus facilement de comprendre ce qui est fait que l'appel à la fonction cTTc, même si elles font en définitive la même chose.
    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. #6
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    734
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 734
    Points : 1 475
    Points
    1 475
    Par défaut
    @boumbata
    non, les commentaires ne remplacent pas le code lisible, et de plus il faut éviter d'en dire trop car comme le dit koala01, c'est le code qui a raison et si tu détailles trop tu risque de désinformer car le contenu des commentaires ne pourra jamais être maintenu à jour...
    @koala01
    En première analyse je suis d'accord avec toi: le code doit être assez lisible pour être compris en lui-même.
    MAIS...un petit one-liner pour expliquer pourquoi la ligne de code en-dessous est un peu exotique...je me l'interdit pas, je le fais de temps à autre. Pas la peine de recopier l'intégrale de Soustrup dans chaque fonction, mais si tu sais rester concis, ça peut éviter de faire des c...ries en arrivant sur un code qu'on a (jamais)(pas) touché ()(depuis longtemps). Et le gars qui change une telle ligne de code sans s'occuper du (petit, encore une fois) commentaire qui va avec, je le classe dans la catégorie de ceux qui codent avec les pieds...


    ça suppose bien sûr de réserver ces commentaires (comme d'ailleurs les lignes hétérodoxes qu'ils sont censés expliquer) aux cas d'exception où le bénéfice le justifie...

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 963
    Points
    32 963
    Billets dans le blog
    4
    Par défaut
    Ce qui est bien c'est qu'on passe de
    Citation Envoyé par Boumbata Voir le message
    Je rajouterais au passage: il ne faut pas hésiter à rajouter davantage de commentaires, que ce soit pour décrire les entrées/sorties de chaque fonction, les namespaces/classes/attributs/etc..., et aussi aux endroits chauds où il y a des passages très techniques (genre manipulation brute de tableaux par exemple) pas forcément compréhensible au premier abord. Pense au développeur suivant, ou bien à toi dans plusieurs mois (je pense que c'est arrivé au moins une fois à tout le monde de ne plus savoir ce que l'on voulait faire dans telle ou telle fonction )
    à
    Citation Envoyé par therwald Voir le message
    un petit one-liner pour expliquer pourquoi la ligne de code en-dessous est un peu exotique
    Et on n'a jamais dit qu'il fallait aucun commentaire.
    Evidemment si tu mets une ligne tricky vaut mieux la commenter...
    Sauf que ce que tu retrouveras le plus souvent chez les débutants c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    // fonction pour sauvegarder un tableau de fichier
    void SauvegarderFichiers(const std::vector<Fichier>& fichier) {
    int i = 0; // index pour ma boucle initialisé à 0
    while (i < t)
    {
     fichiers[i].Save(); // j'en registre le fichier
     i = i+1; // je passe au fichier suivant
    }
    }
    Et ça, c'est juste à bannir
    - ça apporte rien
    - ça pollue le code
    - ça donne encore moins envie de le (re)lire
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  8. #8
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    734
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 734
    Points : 1 475
    Points
    1 475
    Par défaut
    mais peut on plus passer de
    Citation Envoyé par Boumbaata
    Je rajouterais au passage: il ne faut pas hésiter à rajouter davantage de commentaires, que ce soit pour décrire les entrées/sorties de chaque fonction, les namespaces/classes/attributs/etc..., et aussi aux endroits chauds où il y a des passages très techniques (genre manipulation brute de tableaux par exemple) pas forcément compréhensible au premier abord. Pense au développeur suivant, ou bien à toi dans plusieurs mois (je pense que c'est arrivé au moins une fois à tout le monde de ne plus savoir ce que l'on voulait faire dans telle ou telle fonction )
    à
    Citation Envoyé par koala01
    [...]inciter les gens à mettre des commentaires partout!
    ?
    Je suis globalement d'accord avec koala01 et toi, Bousk, simplement je voulais nuancer un peu (et préciser) la formulation suivante, que je trouvais un tantinet lapidaire:
    Citation Envoyé par koala01
    La seule source d'information de quelqu'un qui lit le code (en dehors des éventuels cartouches explicatives et / ou permettant la génération automatique de documentation), ca doit être le code lui-même.

  9. #9
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 94
    Points : 122
    Points
    122
    Par défaut
    Alors une petite explication s'impose:

    1) je réponds à une personne qui a un devoir à rendre, un devoir qui ne bougera donc pas une fois rendue. Partir du principe que le programme pourra être modifiée (et donc partir de l'éventualité que les commentaires pourraient devenir obsolètes) n'a pas de sens dans ce contexte. La personne à qui il va rendre son devoir va aussi voir (j'imagine) l'architecture employée, le découpage, l'encapsulation, etc... Et elle ne va pas forcément comprendre au premier abord le choix du design. L'implémentation de telle ou telle classe devra peut-être être justifiée (si non trivial).

    2) ce que je disais était un ajout, et non un remplacement. Bien évidemment le commentaire ne remplacera jamais des méthodes et des variables nommées correctement (qui suffisent pour la compréhension généralement), je n'ai jamais dit le contraire, qu'il n'y ait pas de quiproquo la dessus.

    3) je suis d'accord avec le fait que trop de commentaires tue le commentaire (autant écrire un bouquin alors), mais j'ai rarement (voire jamais) vu un code, un tant soit peu complexe, non commenté. Si on ne code pas en langage machine, c'est pour que l'humain puisse comprendre un minimum ce qu'il se passe, et si le développeur juge un passage pas forcément compréhensible au premier coup d'œil, un petit commentaire ne fait pas de mal.

    Ne me faites pas dire ce que je n'ai pas dit: Du commentaire à chaque ligne, c'est n'importe quoi. Mais 0 commentaire j'y crois moyen.

  10. #10
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 963
    Points
    32 963
    Billets dans le blog
    4
    Par défaut
    Citation Envoyé par therwald Voir le message
    mais peut on plus passer de
    [...]
    à
    [...]
    ?
    En fait si tu prends la phrase complète c'est
    Mais ce n'est pas une raison pour inciter les gens à mettre des commentaires partout!
    donc ça revient au même : les commentaires il ne faut pas en abuser. C'est un outil à utiliser intelligemment.

    @Boumbata> Tes interventions font penser à un étudiant. Ou quelqu'un qui sort à peine du cursus scolaire.
    J'en suis sorti il y a peu, et pourtant dans les entreprises où je suis passé, les commentaires ne sont pas légion.
    Les "coding guidelines", les nomemclatures, les règles d'écritures oui, les commentaires non.
    Le fait est simple : il sera plus simple de relire quelqu'un dont on comprend le code que de vouloir déchiffrer un commentaire quelconque.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  11. #11
    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 Bousk Voir le message
    En fait si tu prends la phrase complète c'est donc ça revient au même : les commentaires il ne faut pas en abuser. C'est un outil à utiliser intelligemment.

    @Boumbata> Tes interventions font penser à un étudiant. Ou quelqu'un qui sort à peine du cursus scolaire.
    J'en suis sorti il y a peu, et pourtant dans les entreprises où je suis passé, les commentaires ne sont pas légion.
    Les "coding guidelines", les nomemclatures, les règles d'écritures oui, les commentaires non.
    Le fait est simple : il sera plus simple de relire quelqu'un dont on comprend le code que de vouloir déchiffrer un commentaire quelconque.
    Complétons la phrase
    <snip>de vouloir déchiffrer un commentaire quelconque et de s'assurer de l'adéquation de celui-ci avec le code.
    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. Compréhension d'un algorithme sur le problème du sac à dos
    Par Treuze dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 18/12/2006, 15h26

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