Publicité
+ Répondre à la discussion Actualité déjà publiée
Page 1 sur 25 1234511 ... DernièreDernière
Affichage des résultats 1 à 20 sur 496
  1. #1
    Expert Confirmé Sénior

    Inscrit en
    juillet 2009
    Messages
    3 427
    Détails du profil
    Informations forums :
    Inscription : juillet 2009
    Messages : 3 427
    Points : 148 506
    Points
    148 506

    Par défaut Le pire bout de code que vous ayez vu

    Le pire bout de code que vous ayez jamais vu
    Qui l'a fait ? Pourquoi ? Pourquoi était-il si horrible ?


    Il vous a fait rire. Ou hurler. Ou les deux.
    Vous n'en avez pas cru vos yeux et pourtant il était là. Et bien là. Un humain avait écrit ça.
    Il est resté dans votre mémoire comme le pire bout de code que vous ayez jamais vu.

    Quelque fois ce "pire code" n'est pas trop méchant. Il relève juste du non sens :

    Code java :
    1
    2
    3
    4
    5
    6
     
    int length= 0;
    for(int idx = 0; idx < a.length; i++){
        length++;
    }
    System.out.println("La taille du tableau est : " + length);

    Ou comment calculer simplement la longueur du tableau à partir de la longueur ("a.length") qu'on a dès le départ...

    D'autres sont juste parfaitement inutiles :

    Code java :
    1
    2
    3
    4
     
    public Object toObject(String value){
           return (Object) value;
    }

    En Java tout est Object. Aucun besoin d'effectuer un cast donc.

    Mais ce code peut aussi aller jusqu'à vous hanter tant il est horrible. A se demander ce qui a bien pu passer par la tête du "créateur" de ce "monstre", voire si celui-ci sait dans quel langage il code :

    Code java :
    1
    2
    3
    4
     
    public void close(InputStream stream){
        stream = null;
    }

    InputStream est un flux vers une ressource. Pour le fermer, par exemple, il faut invoquer sa méthode close(), mais dans ce cas, le "créateur" s'est contenté de le mettre à null. Les développeurs Java seront d'accord pour admettre l'inutilité crasse de ce bout de code : les variables sont passées par copie de la valeur, donc ce ne sera "null" que dans la méthode.

    Allez une dernière pour la route (pardon pour les yeux) :

    Code java :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public int convert(String value){
          if(value == "0"){
                return 0;
          } else if (value == "1"){
                return 1;
          } else if (value == "2"){
                return 2; 
          } // jusqu'à 25 !
          else {
                return -1;
          }
    }

    Tout cela est faisable en une seule et simple ligne de Java (avec Integer.parseInt(String value) ).
    Mais le pire c'est que, en plus, la méthode de cet autre "créateur fou" ne fonctionne pas du tout. En Java, on ne peut pas faire value == "1" pour comparer sa valeur (il faut faire "1".equals(value) ).



    Invention de syntaxe, non-sens, aberration dans les raisonnements, vous avez déjà dû croiser ces codes cauchemardesques.

    Que vous soyez développeur JavaScript, PHP, Ruby, C, C++, C#, Assembleur, Pascal, Visual Basic, Perl, Python ou autres (désolé de ne pouvoir tous les citer), faîtes nous part de votre expérience de codeur : quel est le pire du pire que vous avez dû lire ?

    Une petite explication succincte pour que les non-spécialistes puissent également partager votre émois (qui je n'en doute pas est encore palpable aujourd'hui) est également la bienvenue.

    Quant à tous ces honteux bouts de Java reproduits ici, ils m'ont été communiqués par Baptiste Witch (responsable rubrique Java) qui se fera un plaisir de nous en livrer d'autres. Un grand merci à lui.

    Mais... je suis sûr que vous avez encore bien pire à raconter.

    Pas vrai ?


    Lire aussi :

    Les rubriques Java, Développement Web et Langages (actus, forums, tutos) de Développez.com

    Et pour se détendre après une journée bien chargée, la rubrique Humour Informatique

  2. #2
    Nouveau Membre du Club
    Inscrit en
    septembre 2006
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : septembre 2006
    Messages : 44
    Points : 28
    Points
    28

    Par défaut

    J'en ai vu un pas mal en php, fait par le responsable développement de ma boîte :

    Code :
    1
    2
    3
    4
    if (true) {
    } else {
    ...
    }
    Ce jour-là je me suis dis que finalement je n'étais pas le plus mauvais ...

  3. #3
    Expert Confirmé Avatar de Gastiflex
    Inscrit en
    octobre 2004
    Messages
    1 323
    Détails du profil
    Informations forums :
    Inscription : octobre 2004
    Messages : 1 323
    Points : 3 230
    Points
    3 230

    Par défaut

    Tout frais : en C++, sous un #ifdef _DEBUG, un if quelconque juste pour choper un point d'arrêt. Le gars s'étonne que le programme ne s'arrête pas... en Release-Debug.

  4. #4
    Membre Expert Avatar de BainE
    Inscrit en
    mai 2004
    Messages
    1 314
    Détails du profil
    Informations forums :
    Inscription : mai 2004
    Messages : 1 314
    Points : 1 330
    Points
    1 330

    Par défaut

    Deux petits bouts de codes qui nous ont fait bien marré devant la machine a café, en C++

    Code C++ :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    bool marvin = true;
     
    switch( marvin )
    {
        case true : /* ... */; break;
        case false : /* ... */; break;
        default :
           /* ... */
    }
    deja faire un switch sur un booleen ca nous a surpris, mais quand on a vu le default

    et le second, un parcours de liste de la STL
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    list<class> lst;
    
    while( i < lst.size() )
    {
        class tmp = lst.pop_front();
        /* ... traitement ... */
        lst.push_back();
    
        i++;
    }
    voila voila

    p.s. : heu faites pas trop gaffe a la syntaxe, ca fait un moment que j ai plus fait de C++ et je me suis pas amusé a compiler ces perles
    "vaste programme"

  5. #5
    Acropole
    Invité(e)

    Par défaut

    Dans le SDK de physX :

    Ca sert à rien, c'est pas trés pro, et ça vient de types à la pointe de la technologie, donc ça surprend.
    Ou alors c'est tellement génial que ca me dépasse.

  6. #6
    Candidat au titre de Membre du Club
    Étudiant
    Inscrit en
    mai 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 28

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mai 2006
    Messages : 24
    Points : 13
    Points
    13

    Par défaut

    Un code javascript bien crade sur un template d'une page produit d'une boutique sous magento (php).

    Code javascript :
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    switch($('productCategory').innerHTML){
        case "Store" :
            $('storeimg').innerHTML="<img src='<?php echo $this->getUrl(); ?>media/store/<?php echo $productId; ?>.jpg' >";
        break;
        ...
        default:
            $('storeimg').innerHTML="<img src='<?php echo $this->getUrl(); ?>media/noproduct.jpg' >";
    }

    Il rend en partie statique la boutique (on doit manuellement ajouter un case à chaque création de nouvelles catégories).
    Il dépend du nom de la catégorie : lors d'une traduction ou d'un changement par le client, tout foire.
    Il y a surement d'autres choses à critiquer sur ce code mais je vais en rester là ^^.

  7. #7
    Membre actif Avatar de DrHelmut
    Homme Profil pro Hugo Capocci
    Directeur technique
    Inscrit en
    octobre 2005
    Messages
    110
    Détails du profil
    Informations personnelles :
    Nom : Homme Hugo Capocci
    Âge : 33
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : octobre 2005
    Messages : 110
    Points : 191
    Points
    191

    Par défaut

    en java, fait par un 'expert' sur une appli que j'ai débogué il y a deux ans.

    Tellement énorme que je m'en rappelle encore, ça donnait à peu près ça :

    Code java :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public String removeForbiddenChar(String input) {
     
     String ouput="";
     String[] s = input.split(";");
     for(int i=0; i<s.length;i++) {
      s[i].replace(";","");
      output+=s[i];
     }
     return ouput;
    }

  8. #8
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    août 2008
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

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

    Informations forums :
    Inscription : août 2008
    Messages : 148
    Points : 216
    Points
    216

    Par défaut

    En Java avec Struts, un getter void ... tellement idiot qu'on a perdu 15min pour savoir d'où venait le problème

  9. #9
    Membre expérimenté
    Homme Profil pro Rémi BOURGAREL
    Développeur .NET
    Inscrit en
    juin 2006
    Messages
    425
    Détails du profil
    Informations personnelles :
    Nom : Homme Rémi BOURGAREL
    Âge : 27
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : juin 2006
    Messages : 425
    Points : 549
    Points
    549

    Par défaut

    Si vous voulez vous marrez avec ce genre de chose :

    http://thedailywtf.com/Series/CodeSOD.aspx

    C'est parfois a mourrir.

    Code C# :
    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
    /// <summary>
        /// Convertit YES ou NO en booléen
        /// </summary>
        public static string boolToYESorNO(bool mon_booleen)
        {
            if (mon_booleen) return "YES";
            return "NO";
        }
     
        /// <summary>
        /// Convertit un booléen en 1 ou 0.
        /// Retourne 1 si le booléen est TRUE
        /// Retourne 0 si le booléen est FALSE
        /// </summary>
        public static int boolTo1or0(bool mon_booleen)
        {
            if (mon_booleen) return 1;
            return 0;
        }
     
        /// <summary>
        /// Convertit un booléen en YES ou NO
        /// </summary>
        public static bool YESorNOToBool(string YesOrNo)
        {
            if (string.IsNullOrEmpty(YesOrNo)) return true;
            if (YesOrNo.ToUpper() == "YES") return true;
            return false;
        }

    Donc a crée ces fonctions car a une epoque ou les dev ne connaissai pas le booleen de .net(migration depuis asp), ils utilisaient 1 ou 0 et parfois "YES" ou "NO" .... Donc il reste du code avec ce genre de chose ^^

  10. #10
    Membre actif
    Inscrit en
    juillet 2007
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : juillet 2007
    Messages : 116
    Points : 166
    Points
    166

    Par défaut

    pour ma part, durant mon stage j'ai dû débugger une petite appli qui avait coûtée plus de 50 000 € à la société. Vu la "qualité" du code, je croit que c'est bien plus en réalité...mais chut le boss n'aime pas admettre ses conneries.

    Code :
    1
    2
    3
    4
    5
    6
    7
    if(condition)
    {
        //blabla
    } else {
       //le même blabla que dans le if
    }
    sans oublier les Exceptions avalées, les erreurs dans le formules mathematiques etc...
    Edit: Je précise juste que l'application en question est une webapp Java et que la quasi totalité du code métier était écrit dans les servlets ainsi que le code HTML. Cette précision fait suite à une remarque que j'ai reçu par MP:

    J'ai travaillé dans une boite ou il fallait mettre un if pour que le temps machine soit identique lors de l'exécution à une autre boucle, et le code machine généré devait être aussi long. Ça ne veut absolument pas dire qu'il est mauvais. Par contre, votre message montre surtout clairement que vous n'avez aucune expérience en développement, ou pas assez pour éviter de critiquer ce genre de chose. A la limite, critiquer le fait qu'il n'y ait aucun commentaire expliquant cette technique ok.
    Si quelqu'un peut m'expliquer le lien avec mon exemple de code je suis preneur...car dans mon exemple je parle d'un code qui exécuté dans le if, ou dans le else revient au même code sans un if...si besoin est de mettre un if inutile, il aurait été plus élégant de mettre :
    Code :
    1
    2
    3
    if(condition); 
    //blabla qu'on écrit qu'une fois, et par conséquent qu'on débugge qu'une fois.

  11. #11
    Invité régulier
    Profil pro dido dido
    Inscrit en
    octobre 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Nom : dido dido

    Informations forums :
    Inscription : octobre 2009
    Messages : 5
    Points : 5
    Points
    5

    Par défaut On me dit que ce morceau de code fait quelque chose

    Je dis que le code suivant (qui peut etre tester dans plusieurs langages) ne fait rien, on me dit que la reponse est superficielle

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    do break;
    while(true);
    do;
    while(false);
    if(true);
    if(false);
    else;
    for(;true; )break;
    while(true)break;
    Quelle serait la vrai reponse(peut-etre celle, profonde)

  12. #12
    Membre expérimenté
    Homme Profil pro Rémi BOURGAREL
    Développeur .NET
    Inscrit en
    juin 2006
    Messages
    425
    Détails du profil
    Informations personnelles :
    Nom : Homme Rémi BOURGAREL
    Âge : 27
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : juin 2006
    Messages : 425
    Points : 549
    Points
    549

    Par défaut

    Citation Envoyé par threshold Voir le message
    sans oublier les Exceptions avalées, les erreurs dans le formules mathematiques etc...
    En meme temp ce que tu mets dans le " Exceptions avalées, les erreurs dans le formules mathematiques,etc" tu en fera tout les jours , aucun développeur ne fait pas d'erreur. Si tu pense qu'un développeur est une merde des qu'il fait une erreur, même grossière ben bonne chance dans ton bureau

    Ce qui est amusant ce sont les erreurs plus que grossière, les truc limite qui sont des correctifs de bug par dessus des correctif de bug par dessus d'autre patch, du style if(5<8). Et ça peut etre pondu par n'importe que dev, tout dépend de sa fatigue / degré d'alcoolémie / cafeine / vacance etc ...

    "It's not a bug , it's a feature"

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    décembre 2006
    Messages
    271
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : décembre 2006
    Messages : 271
    Points : 338
    Points
    338

    Par défaut

    En php :

    Code :
    1
    2
    3
    foreach($_POST as $cle => $val)
         eval("\$".$cle."=\"".$val."\";");
    J'ai sauté au plafond et je fais pas partie de l'équipe de dev web ...

  14. #14
    Membre habitué
    Homme Profil pro Benjamin Dubois
    Chef de projet NTIC
    Inscrit en
    février 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Nom : Homme Benjamin Dubois
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : février 2008
    Messages : 71
    Points : 114
    Points
    114

    Par défaut

    J'ai bossé avec un presta tellement nul que je sais pas trop quel bout de code choisir.

    J'ai eu droit à celui-ci, plutôt pas mal :

    Dans une page de traitement d'un formulaire :

    Code :
    1
    2
    3
    4
    5
    <?php 
    
    $nom = post('nom');
    $prenom = post('prenom');
    [...]
    Et dans un fichier inclus, ladite fonction :

    Code :
    1
    2
    3
    4
    <?php
    function post($var) {
    return $_POST['$var'];
    }
    La fonction ne servait strictement à rien, mais elle était consciencieusement appliquée à tous les champs de tous les formulaires (plus de 500 champs)...

    J'en ai plein d'autres comme ça :

    - Le CMS utilisait adodb pour accéder à la BDD. Par dessus, une classe d'abstraction stockée dans un Zend_Registry, et par dessus un ensemble de fonctions style dbQuery(), dbResult() pour faire abstraction de la classe d'abstraction.


    L'agence est une très grosse webAgency parisienne.

  15. #15
    Membre habitué
    Profil pro Nicolas FRANCOIS
    Développeur Java
    Inscrit en
    novembre 2008
    Messages
    63
    Détails du profil
    Informations personnelles :
    Nom : Nicolas FRANCOIS
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : novembre 2008
    Messages : 63
    Points : 105
    Points
    105

    Par défaut

    Comment faire une pause d'une seconde en java ?
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
     Calendar timer = Calendar.getInstance();
        timer.add(14,1000);
        int i=0;
        while (Calendar.getInstance().before(timer)) {
            i++;
            i--;
        }
    J'y trouve un coté artistique.
    Je m'étais demandé l'interet du i++ suivi de i--; peut être avait il peur d'un dépassement capacité du int

  16. #16
    Membre régulier Avatar de wizad
    Étudiant
    Inscrit en
    août 2004
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 26

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : août 2004
    Messages : 103
    Points : 82
    Points
    82

    Par défaut

    Citation Envoyé par monsieurben Voir le message
    J'ai bossé avec un presta tellement nul que je sais pas trop quel bout de code choisir.

    J'ai eu droit à celui-ci, plutôt pas mal :

    Dans une page de traitement d'un formulaire :

    Code :
    1
    2
    3
    4
    5
    <?php 
    
    $nom = post('nom');
    $prenom = post('prenom');
    [...]
    Et dans un fichier inclus, ladite fonction :

    Code :
    1
    2
    3
    4
    <?php
    function post($var) {
    return $_POST['$var'];
    }
    La fonction ne servait strictement à rien, mais elle était consciencieusement appliquée à tous les champs de tous les formulaires (plus de 500 champs)...

    J'en ai plein d'autres comme ça :

    - Le CMS utilisait adodb pour accéder à la BDD. Par dessus, une classe d'abstraction stockée dans un Zend_Registry, et par dessus un ensemble de fonctions style dbQuery(), dbResult() pour faire abstraction de la classe d'abstraction.


    L'agence est une très grosse webAgency parisienne.
    En théorie ça ne doit même pas fonctionner : les variables entre guillemets simple ne sont pas interprété...
    Dev C#, PHP, Java

  17. #17
    Membre actif Avatar de ke2007
    Homme Profil pro Kevin
    Développeur Web
    Inscrit en
    août 2007
    Messages
    83
    Détails du profil
    Informations personnelles :
    Nom : Homme Kevin
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : août 2007
    Messages : 83
    Points : 153
    Points
    153

    Par défaut

    Citation Envoyé par Acropole Voir le message
    Dans le SDK de physX :

    Ca sert à rien, c'est pas trés pro, et ça vient de types à la pointe de la technologie, donc ça surprend.
    Ou alors c'est tellement génial que ca me dépasse.
    La même dans le code de font2ftt

  18. #18
    Membre éclairé
    Homme Profil pro Jérémy
    Ingénieur développement logiciels
    Inscrit en
    mai 2005
    Messages
    513
    Détails du profil
    Informations personnelles :
    Nom : Homme Jérémy
    Localisation : France

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

    Informations forums :
    Inscription : mai 2005
    Messages : 513
    Points : 390
    Points
    390

    Par défaut

    Citation Envoyé par Acropole Voir le message
    Dans le SDK de physX :
    Je rigolais toujours en voyant ce genre de code jusqu'à y à quelques mois où j'ai repris une application que j'ai développé y à presque 1,5 ans maintenant et ou j'ai écrit presque la même chose, mais en pire...

    Code :
    1
    2
    3
    4
    5
    6
    7
    if(1 == 1) {
        // PAS BIEN !!!
        [...]
    }
    else {
        [...]
    }
    Je me demande bien ce qui à pu me traverser l'esprit quand j'ai écrit ça! J'ai même honte de le poster ce soir...
    Jérémy
    Ingénieur Conception et Développement

  19. #19
    Membre habitué Avatar de cysboy
    Profil pro
    Développeur informatique
    Inscrit en
    août 2006
    Messages
    221
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : août 2006
    Messages : 221
    Points : 131
    Points
    131

    Par défaut

    Une fois j'ai tout de même vu que mon voisin de bureau cherchait à faire passer le contenu d'une table contenant, au bas mot, 25 colonnes et environ 1 000 000 de lignes en paramètres GET d'une page PHP...

    Le tout, pour pouvoir trier et afficher le contenu de la dite table sur une page...

    Je l'ai arrêter avant qu'il ne teste.

  20. #20
    Candidat au titre de Membre du Club
    Inscrit en
    mai 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : mai 2007
    Messages : 15
    Points : 12
    Points
    12

    Par défaut

    Difficile de trouver le pire tant j'en vois tous les jours ...

    je me rappelle d'une action struts avec une méthode de plus de 5000+ lignes en un seul bloc, non commenté, mal indenté, avec des noms de variables incompréhensibles et les attributs des objets réutilisés pour faire plein de choses ... Imaginez qu'en plus celui qui a développez ça était un peu "artiste" et là ...

    Et imaginez que dans ce code, vous savez qu'il y a un bug et c'est à vous qu'incombe le privilège de le corriger... ça doit certainement rappeler des souvenir à des gens ...

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •