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

Débats sur le développement - Le Best Of Discussion :

Quel est le pire bout de code que vous ayez jamais écrit ?


Sujet :

Débats sur le développement - Le Best Of

  1. #21
    Membre averti Avatar de thorium90
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Juillet 2008
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 120
    Points : 328
    Points
    328
    Par défaut
    A mes débuts à l'age de 11 ans, j'ai commencé en qBASIC mon pere ne m'avais appris que la structure IF. Peux de temps apres, voyant mon engouement pour la prog, mes parent m'ont acheté Visual BASIC 6, je m'en suis servi pendant 4 ans sans connaitre ni les boucles, ni les tableaux.

    Alors pour les boucles, j'utiliser l'objet Timer() que je mettait a 1 miliseconde et que j'activer ou désactiver selon les besoins avec un bon vieux timer1.enable=false/true

    Pour les tableaux, je m’était inspiré de Excel; et je nommais donc mes variables : aa, ab, ac, ad, ae, af etc...

    Alala, que de nostalgie! Je crois pas avoir fait pire depuis, même si mes débuts en C n'étaient pas non plus très brillant ^^

  2. #22
    Membre habitué
    Homme Profil pro
    Dev C++, CUDA
    Inscrit en
    Mai 2005
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Nouvelle-Zélande

    Informations professionnelles :
    Activité : Dev C++, CUDA
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2005
    Messages : 83
    Points : 129
    Points
    129
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for (i=0; i<numtab; i++);
         str[i]=(char*)malloc(sizeof(char)*(MAX_STRING+1));
    bla bla...
    yada yada ...
    Et paf le segmentation fault ! Et comme j'avais de la "chance", ca plantais pas quand j'utilisais le str[0] mais genre au niveau du str[3]
    Je me suis cassé la tête pdt je ne sais pas combien de temps sur celui-là ! Et biensûr c'était tard le soir (ou plutôt bientôt 8h du matin, l'heure des cours ...).
    Ce qui m'a finalement sauvé je crois c'est la tabulation intelligente de Emacs (que je ne peux plus m'en passer suite à ca !)

  3. #23
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 5
    Points : 0
    Points
    0
    Par défaut
    Ma petite perle en C:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for (unsigned int i = j; i >= 0; i--) {
      ...
    }
    Je n'ais pas honte, j'étais étudiant, c'était il y a 15 ans. Depuis, pas de souvenir d'avoir écrit ce genre d'énormité, mais Java y est pour beaucoup.

  4. #24
    Membre actif
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2008
    Messages : 73
    Points : 264
    Points
    264
    Par défaut
    C'était il y a plus de 30 ans, sur "main frame" (évidemment à l'époque). Écrit en PL1, mais je le transcrit en C parce que j'imagine que plus personne ne connaît le PL1.

    Je dois terminer un programme juste avant de partir en vacances. Il contient les lignes suivantes qui doivent s’exécuter environ 10 millions de fois (1 fois pour chaque enregistrement d'un fichier) :
    if (code == 1) ... :
    if (code == 6) ... :
    if (code == 'c') ... :
    if (code == 10) ... :
    if (code == 'a') ... :
    if (code == 11) ... :

    Etc, pour environ 400 lignes.

    Je teste avec un fichier contenant une centaine de cas remarquables et quelques cas normaux, OK, tout baigne et je pars faire des bulles en Méditerranée pour 3 semaines.

    À mon retour, le boss me prend à part et me dit :
    "Ton programme, il mouline des heures et des heures, il sort des résultats intermédiaires corrects, mais on a été obligé de l'arrêter après 3 heures de fonctionnement alors qu'il était prévu pour tourner une demi-heure, il foutait en l'air tout notre planning."


    La toute grosse honte pour moi qui me vantait d'écrire des programmes performants ! Bon, on dira, à ma décharge, que j'étais plus préoccupé par mes futures vacances que par le programme.

    Bon, pour bien comprendre la co*rie, il faut se remettre dans le contexte de l'époque, un "main frame" avait peut-être la puissance d'un téléphone moderne et que les compilateurs n'optimisaient pas.

  5. #25
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 13
    Points : 49
    Points
    49
    Par défaut
    Celui que j'écris en ce moment en ASP.NET n'est pas mal dans le genre... Classes métier dans le code behind, pas d'interfaces, pas d'abstractions, méthodes bouchons statiques, scripts pas minifiés, code dupliqué un peu partout, pas de commentaires, pas de tests unitaires... Evidemment vous l'aurez compris, c'est juste pour une démo, après je vais faire le ménage, promis

  6. #26
    Membre régulier Avatar de Old_Chap
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Mai 2005
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Services de proximité

    Informations forums :
    Inscription : Mai 2005
    Messages : 56
    Points : 71
    Points
    71
    Par défaut On en sort pas
    Bonjour

    J'étais stagiaire avec promesse d'embauche, dév sous Nixdorf 8870 ("mini ordinateur)en basic interprété.
    Je programme une liste de stats pour un client.
    Mon boss me demande une démo:
    je lance la liste (une imprimante pour tout le monde dans la boite) sur un gros fichier. Mon boss regarde l'impression et me dit "c'est pas mal, arrête la qu'on voit le code" : On a du arrêter l'ordinateur !! pas de sortie prévue !!

    J'en rigole encore !! 30 ans après...

  7. #27
    Expert confirmé Avatar de fregolo52
    Homme Profil pro
    Développeur C
    Inscrit en
    Août 2004
    Messages
    2 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Août 2004
    Messages : 2 364
    Points : 5 378
    Points
    5 378
    Par défaut
    Citation Envoyé par octal Voir le message
    Citation Envoyé par Lapinpanda Voir le message
    Où est le problème dans ce code? mon PIC16F84 il aime bien ce code là
    On utilise tous while (true), mais pour être sûre d'être compatible avec tous les compilos, il faut préférer for(;;).

  8. #28
    Membre chevronné

    Homme Profil pro
    Mentaliste
    Inscrit en
    Mars 2008
    Messages
    872
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Mentaliste
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2008
    Messages : 872
    Points : 1 813
    Points
    1 813
    Par défaut
    Citation Envoyé par abgech Voir le message
    ...
    if (code == 1) ... :
    if (code == 6) ... :
    if (code == 'c') ... :
    if (code == 10) ... :
    if (code == 'a') ... :
    if (code == 11) ... :...
    Si c'était en C je ne comprends pas comment tu peux éviter ça à moins que tu ne veuille dire "elseif" ou "continue" ou "break" à la fin de chaque évaluation ?
    .I..

  9. #29
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 576
    Points : 1 528
    Points
    1 528
    Par défaut
    #define private public avant d'inclure un .h.

    Comme l'a dit un collègue, c'est comme ça qu'on devient délinquant
    Le pire c'est qu'on avait cherché, mais on n'avait pas trouvé d'autre solution...
    La perfection est atteinte, non pas lorsqu’il n’y a plus rien à ajouter, mais lorsqu’il n’y a plus rien à retirer. - Antoine de Saint-Exupéry

  10. #30
    ALT
    ALT est déconnecté
    Membre émérite
    Avatar de ALT
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2002
    Messages
    1 234
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 234
    Points : 2 338
    Points
    2 338
    Par défaut
    C'était un programme que j'avais fait pour moi. Il s'agissait d'imprimer n'importe quel code avec respect de la syntaxe : les mots-clés en gras, les commentaires en italique, les chaînes de caractères soulignées...
    J'avais écrit ça en Pascal, avec des conditions partout (du style si c'est du C & pas de l'Ada ni du Fortran ni...)
    Résultat : un code très complexe & des bugs mineurs. Mais quand j'en corrigeais un, un autre apparaissait.
    J'ai (longuement) réfléchi au pb, puis, un jour, illumination : utiliser le type énuméré !
    Euréka !
    Code plus court, plus clair & plus fiable.
    Mais la première version de ce programme était vraiment très moche !

    --------------------

    Plus récemment, c'était un truc en PHP & MySQL. Code très moche (à mon goût), bien que parfaitement fonctionnel.
    Bon, l'excuse, là, c'est que j'avais suivi une courte formation sur le sujet deux ans auparavant & que c'était la première fois que je mettais en pratique ces concepts.
    « Un peuple qui est prêt à sacrifier un peu de liberté contre un peu de sécurité, ne mérite ni l'une, ni l'autre, et finira par perdre les deux. »
    Attribué indistinctement à :
    Thomas Jefferson
    Benjamin Franklin
    Albert Einstein !

  11. #31
    Membre éclairé Avatar de rt15
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2005
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 262
    Points : 665
    Points
    665
    Par défaut
    Citation Envoyé par SurferIX Voir le message
    Si c'était en C je ne comprends pas comment tu peux éviter ça à moins que tu ne veuille dire "elseif" ou "continue" ou "break" à la fin de chaque évaluation ?
    La variable code ne peut a priori pas être à la fois égale à 1, 6, 'c', etc... en même temps (Sauf si elle change dans les "..."). Donc des else if serait plus adapté. Mais le code ne serait environs que deux fois plus rapide (Complexité passant de n à n/2). Si code == 'c', on comparerait code avec 1, 6 et 'c', mais plus les suivant. Une optimisation est donc de mettre les cas courants dans les premiers else if. Comme ça on match plus vite.

    Mais si les valeurs de code sont dans une plage relativement petite (Un entier de 0 à 400 par exemple), en C on peut faire un tableau de fonction, et là normalement ça dépote pas mal vu que l'on ne fait plus n tests mais que l'on a un accès direct (Par contre l'appel de fonction aura un coût).

    Code C : 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
    #include <stdio.h>
     
    typedef void (*treatment)();
     
    void treatmentA()
    {
      puts("Alpha");
    }
     
    void treatmentB()
    {
      puts("Bravo");
    }
     
    void treatmentC()
    {
      puts("Charlie");
    }
     
    void treatmentD()
    {
      puts("Delta");
    }
     
    void treatmentE()
    {
      puts("Echo");
    }
     
    treatment treatments[] = {
      treatmentA,
      treatmentB,
      treatmentC,
      treatmentD,
      treatmentE
    };
     
    int __cdecl main(int argc, char* argv[])
    {
      char code;
     
      code = getchar();
      if ((code >= 'a') && (code <= 'e'))
      {
        treatments[code - 'a']();
      }
      else
      {
        printf("Le caractère \"%c\" n'est pas pris en charge.\n", code);
      }
      return 0;
    }

  12. #32
    Membre chevronné

    Homme Profil pro
    Mentaliste
    Inscrit en
    Mars 2008
    Messages
    872
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Mentaliste
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2008
    Messages : 872
    Points : 1 813
    Points
    1 813
    Par défaut
    Citation Envoyé par rt15 Voir le message
    La variable code ne peut a priori pas être à la fois égale à 1, 6, 'c', etc... en même temps (Sauf si elle change dans les "..."). Donc des else if serait plus adapté. Mais le code ne serait environs que deux fois plus rapide (Complexité passant de n à n/2). Si code == 'c', on comparerait code avec 1, 6 et 'c', mais plus les suivant. Une optimisation est donc de mettre les cas courants dans les premiers else if. Comme ça on match plus vite.

    Mais si les valeurs de code sont dans une plage relativement petite (Un entier de 0 à 400 par exemple), en C on peut faire un tableau de fonction, et là normalement ça dépote pas mal vu que l'on ne fait plus n tests mais que l'on a un accès direct (Par contre l'appel de fonction aura un coût).

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #include <stdio.h>
     
    typedef void (*treatment)();
     
    void treatmentA()
    {
    ...
    }
    Merci pour l'explication - et le pire c'est que je le fais en C :

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
        /* (!) Déclaration d'un pointeur vers une fonction de calcul
         * des montées : ca sera soit le calcul des montées pour
         * les gros blocs soit le calcul des montées pour les routes :
         */
        void (*fc_montees_possibles) (struct cell * tabcells,
                                      cell_montee * tab_montees,
                                      unsigned long *nb_montees,
                                      unsigned long taille_x,
                                      unsigned long taille_y, unsigned long z); 
        if (calcul_pour_road) {
            fc_montees_possibles = &montees_possibles_pour_roads;
        } else {
            fc_montees_possibles = &montees_possibles_pour_gros_blocs;
        }

    Comme on dirait en shell :

    Olivier < "Aucune excuse"
    .I..

  13. #33
    Membre habitué
    Inscrit en
    Octobre 2004
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 83
    Points : 132
    Points
    132
    Par défaut
    Non...Vraiment.....même en cherchant bien.....j'ai toujours écrit du bon code

  14. #34
    Membre régulier
    Profil pro
    Inscrit en
    Février 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 39
    Points : 105
    Points
    105
    Par défaut If
    en vb :

    If True then ....

    (ou bien)

    If a = True then
    b = true
    else
    b = false
    endif

    en général j'optimise dans un 2ieme temps lol : b = a c'est pas mal non plus

  15. #35
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 5
    Points : 0
    Points
    0
    Par défaut Troll sur le "Voter contre ce message"
    Il y a un (présumé) troll qui s'amuse à cliquer sur "voter contre" sur pas mal de messages de ce thread. Je ne comprends pas pourquoi.

  16. #36
    Membre extrêmement actif
    Homme Profil pro
    Graphic Programmer
    Inscrit en
    Mars 2006
    Messages
    1 545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Graphic Programmer
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 545
    Points : 3 941
    Points
    3 941
    Par défaut
    C'était quand j’apprenais en autodidacte la programmation, le c++, les pointeurs, etc....

    Je voulais écrire une chaîne de caractères dans un fichier.
    Et j’enregistrai caractère par caractère.
    C'était lonnnnnnnnnnnnng

    Quand j'y repense maintenant je me dit que j'ai progressé

  17. #37
    Membre averti Avatar de thorium90
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Juillet 2008
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 120
    Points : 328
    Points
    328
    Par défaut
    Citation Envoyé par pyros Voir le message
    #define private public avant d'inclure un .h.

    Comme l'a dit un collègue, c'est comme ça qu'on devient délinquant
    Le pire c'est qu'on avait cherché, mais on n'avait pas trouvé d'autre solution...
    HAHAHA +1 j'avoue, c'est ultra sale, ça me rappelle la signature d'un membre de développez.com que j'adore :

    C'est telement dôle je trouve

  18. #38
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 8
    Points : 18
    Points
    18
    Par défaut
    chose = true;

    [...]

    if (chose = false) {

    blablabla

    }


    J'étais en train d'apprendre le C++, je ne connaissais que le VB à l'époque et je ne savais pas qu'il falait doubler le = quand on veut tester et pas modifier (VB n'a pas cette subtilité). J'ai dû passer des heures à essayer de comprendre ce qui n'allait pas.

    (Par la suite, j'ai entre autres appris l'existence du point d'exclamation).

  19. #39
    Membre du Club

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

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

    Informations forums :
    Inscription : Mai 2007
    Messages : 40
    Points : 47
    Points
    47
    Par défaut
    J'avoue avoir souvent fait ce genre de code en VB:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    If (me.chkbox.value = true) then
      me.autrecontrol.enable = true
    else
      me.autrecontrol.enable = false
    end if
    Hahaha

    Alors qu'un simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    me.autrecontrol.enable = me.chkbox.value
    aurait suffit!!!

    Une chance qu'on apprends de nos erreurs!!! hehehe

  20. #40
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3
    Points : 4
    Points
    4
    Par défaut Base de données relationnelle sans l'être!
    Pour ma part, mon pire code, c'est quand je faisais du PHP par moi même. Je n'avais aucune connaissance SQL et j'ai fait un site web avec MySQL. J'y ai inclus un service de messagerie instantanée, et chaque utilisateur avais sa propre table (ex.: TBL_MSG_FRAGMATYC)!!! De plus, lorsque je voulais obtenir une ligne en particulier, je faisais un SELECT * FROM MA_TABLE et après, en PHP, je filtrais mes résultats !!! Ma foie, il faut bien commencer par quelque part, maintenant, j'écris des procédures stockées Oracle hautement optimisées et je suis une certification Oracle DBA! Vive l'évolution!

    Un autre petit truc drôle, j'ai utilisé des BITMAP dans un jeux pour les graphiques!!! TROP LOURD!!!

Discussions similaires

  1. Le pire bout de code que vous ayez vu
    Par Gordon Fowler dans le forum Actualités
    Réponses: 495
    Dernier message: 06/06/2014, 16h56
  2. Quel est le développeur le plus fainéant que vous ayez rencontré ?
    Par Gordon Fowler dans le forum Actualités
    Réponses: 101
    Dernier message: 13/03/2013, 14h45
  3. Réponses: 85
    Dernier message: 08/02/2011, 18h02
  4. Réponses: 64
    Dernier message: 06/12/2010, 08h04

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