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

Actualités Discussion :

Le pire bout de code que vous ayez vu

  1. #41
    Inactif  
    Profil pro
    Inscrit en
    Février 2003
    Messages
    4 341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 4 341
    Points : 5 953
    Points
    5 953
    Par défaut
    Un truc une fois :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Case une_Variable Of
       True : //Code
      False : //
      Else Case
        //Code
    End
    La variable était de type Booléen ! Le pire était qu'il y avait du code dans le Else case !

  2. #42
    Expert éminent sénior
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    6 803
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 6 803
    Points : 32 058
    Points
    32 058
    Par défaut
    Citation Envoyé par sleepy2002 Voir le message
    (.../...)
    N'oublions pas que c'est en forgeant qu'on devient forgeron
    Exact. Le pire que j'ai vu a été fait par un informaticien, disons, improvisé. C'est d'ailleurs le premier code professionnel sur lequel je suis tombé. J'ai vu mieux depuis, celà va sans dire.

    contexte : une équipe d'homologation contient dans ses rangs une superbête en programmation qui fait plein de macros VB pour Excel qui facilitent grandement la vie de tout le monde. Puis la superbête se barre en mauvais termes, en effaçant une partie de ses codes. Un homologateur, jamais formé pour programmer, essaye de reprendre..... Il doit faire un traitement sur des lignes de tableau, mais c'est pas le même suivant que la valeur est alpha ou numérique.

    et ça donne un truc du genre :

    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
    for i = 1 to 3
         (traitement alpha)
    next i
    for i = 4 to 5
         (traitement num)
    next i
    for i = 6 to 6
         (traitement alpha)
    next i
    for i = 7 to 9 
         (traitement num)
    next i
    for i = 10 to 13
         (traitement alpha)
    next i
    for i = 14 to 15
         (traitement num)
    next i
    for i = 16 to 16
         (traitement alpha)
    next i
    for i = 17 to 20
         (traitement num)
    next i
    etc.......jusqu'à la ligne 110
    les traitements étant faits dans leur intégralité à chaque fois.....et étant toujours identiques. Mais ça marchait! Quand on m'a demandé d'ajouter quelques lignes, je me suis permis d'industrialiser tout ça.....

    Mais il est effectivement difficile de jeter la pierre à quelqu'un de non formé, lâché dans un contexte ou l'aide en ligne de VB pour Excel avait été désactivée, ou internet était inaccessible, bref, ou l'auto-formation était des plus délicates.



    EDIT

    J'oubliais une autre horreur, celle-ci datant du temps ou le Cobol ne permettait pas de programmation structurée, et ou seul le GO TO permettait de faire des embranchements. Ca donnait un truc du genre :

    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
    A1.
    MOVE 1 TO I.
    A11.
    (traitement sur I)
    ADD 1 TO I.
    IF I < 10
        GO TO A1
    END-IF.
    A121.
    MOVE 0 TO J
    A122.
    ADD 1 TO J.
    IF I < VALEUR-QUELCONQUE
        GO TO A122
    END-IF.
    En bref, du pur code spaghetti, mais à l'époque ils n'avaient pas le choix. J'ai douillé pour faire le reverse engineering.....
    Les 4 règles d'airain du développement informatique sont, d'après Michael C. Kasten :
    1)on ne peut pas établir un chiffrage tant qu'on a pas finalisé la conception
    2)on ne peut pas finaliser la conception tant qu'on a pas complètement compris toutes les exigences
    3)le temps de comprendre toutes les exigences, le projet est terminé
    4)le temps de terminer le projet, les exigences ont changé
    Et le serment de non-allégiance :
    Je promets de n’exclure aucune idée sur la base de sa source mais de donner toute la considération nécessaire aux idées de toutes les écoles ou lignes de pensées afin de trouver celle qui est la mieux adaptée à une situation donnée.

  3. #43
    Membre averti Avatar de vintz72
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    154
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 154
    Points : 316
    Points
    316
    Par défaut
    Citation Envoyé par LordBob Voir le message
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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...
    Ce genre de code s'explique avec les langages qui ne sont pas pourvu de directives de compilation. Par exemple en C, on fait un #if 0 #endif autour d'un bloc de code pour le désactiver (temporairement). En Java, on fait un "if (0)"... Le truc, c'est quand on le réactive pour de bon, il faut faire le ménage plutôt que laisser le "if (1)"...

  4. #44
    Expert confirmé

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Points : 4 324
    Points
    4 324
    Par défaut
    Citation Envoyé par vintz72 Voir le message
    En Java, on fait un "if (0)"...
    Compilation fail.
    http://alaindefrance.wordpress.com
    Certifications : SCJP6 - SCWCD5 - SCBCD5 - SCMAD1
    SDE at BitTitan

  5. #45
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par vintz72 Voir le message
    Ce genre de code s'explique avec les langages qui ne sont pas pourvu de directives de compilation. Par exemple en C, on fait un #if 0 #endif autour d'un bloc de code pour le désactiver (temporairement). En Java, on fait un "if (0)"... Le truc, c'est quand on le réactive pour de bon, il faut faire le ménage plutôt que laisser le "if (1)"...
    En Java ce serait plutôt des if(true) ... mais je confirme que cela peut être très pratique pour activer/désactiver rapidement un petit bout de code

    De plus cela n'impacte pas le code généré :
    • Le if(false) sera complètement supprimé du code généré.
    • La condition du if(true) sera supprimé (inutile de l'évaluer), mais son contenu sera bel et bien généré dans le code (comme s'il n'y avait jamais eu de if)








    Sinon, une chose qui me titille souvent en Java, même si ce n'est pas vraiment une erreur grave : le fait de vouloir "initialiser" les objets avant de les utiliser. Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    String str = new String(); // Le new est complètement inutile ici
    str = getString();


    a++

  6. #46
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Le célèbre convertisseur de chemin windows->unix en Java :

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    String convertWindowsPathToUnix(String path) {
        path.replace('\\', File.separatorChar);
        return path;
    }

    Dommage que les chaines ne soient pas mutables en Java.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  7. #47
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 259
    Points : 607
    Points
    607
    Par défaut
    Citation Envoyé par kev42100 Voir le message
    J'ai vu aussi le if(true) dans Mitaka, un logiciel astronomique de 3D temps réel ............
    Ca serait pas tout simplement un générateur de code automatique qui aurait fait ca, comme pour physx ?
    Par exemple le générateur de parseur JavaCC fait parfois des if (true).
    C'est moche mais c'est éliminé par les compilateurs heureusement

    Citation Envoyé par xtope Voir le message
    Je dis peut-être une bêtise (faut pas m'en vouloir, parfois je suis crevé après le boulot..) mais ce bout de code m'a l'air tout a fait fonctionnel.
    En Java les paramètres ne sont passés par valeur que pour les types primitifs, pour les objets c'est par référence.
    Ici donc c'est bien par référence que c'est passé.
    Non, c'est une copie de la référence originale qui est passée, donc ca pointe bien sur le même objet mais le passer à null ne va pas fermer le stream, et surtout l'appelant de cette méthode aura toujours sa référence vers le stream en question

    Sinon le truc le plus moche que j'ai vu c'était fait en php, le type devait a partir d'un serveur php récupérer des fichiers sur un serveur linux via ftp.
    Mais n'y arrivant pas, il a finalement décidé d'installer Samba sur le serveur linux et de mettre dans le code php son login/pass du domaine Windows de l'entreprise (sachant que bien sur le produit ne doit pas tourner chez nous mais chez les clients auxquels on vendra le soft )

  8. #48
    Membre confirmé Avatar de getz85
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2008
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Janvier 2008
    Messages : 423
    Points : 462
    Points
    462
    Par défaut
    Citation Envoyé par Gordon Fowler Voir le message

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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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...
    C'est pas ça qui m'a choqué dans ton code au début, c'est plutôt le i++

    => "i undefined variable"

  9. #49
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 16
    Points : 25
    Points
    25
    Par défaut
    Citation Envoyé par Alain Defrance Voir le message
    Bonjour,



    C'est une facon de cacher l'implémentation. Le fait de créer cette indirection n'est pas une mauvaise pratique au contraire. Ici on voit que ca ne sert à rien, mais ca évite de refactorer ton code une fois que tu auras des modifitations à faire au moment de la récupération de tes champs post. A ce moment là tu va finir par faire pareil que lui pour factoriser ton code, sauf que tu l'auras pas prévu à l'avance. Là au moins c'est tout prêt, lui l'a prévu ...
    Oui et non, on peux aussi traiter tous les POST avec un simple foreach sur cette variable mais bon, c'est comme dans tous les langages, ya 10 mille façons de faire..

    Je pense juste que sans connaitre la totalité du programme on peux pas dire que c'est "un bout de code horrible", et après chacun sa façon de programmer, perso ca m'arrive de faire un extrait de la var $_POST pour obtenir des $p_nomduchamp (c'est toujours bon de gratter 4/5 caractères, quand ta 50 champs à traité ca fais la diff)

  10. #50
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    On voit souvent des codes du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if(empty($var)){
        return true;
    }
    else{
        return false;
    }
    Alors que ceci équivaut à :


  11. #51
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    en 25 ans j'ai vu pas mal de choses mal écrites mais j'en ai écrit aussi pas mal
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     if(a=1) {
    // y a de quoi se poser des questions
    }...
    else {
    //hum hum
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function Char* toto(){
    machaine  char*
    return machaine; 
    }
    
    trucchaine=toto()
    printf(truchaine)
    //dump mémoire
    avec en plus
    modifier un program
    compiler le program
    a.out modification pas prise en compte
    plus de 2 heures avant de comprendre l'utilité du PATH j'en suis pas fier

    et le meilleur
    faire un code récursif pour écrire un fonction dos de suppressions des fichiers
    compiler
    tester
    et me retrouver avec un disque vide

    donc quand je vois des erreurs de code je ne jette pas la pierre (pierre) mais j'essaye d'expliquer l'incongruité du code.

  12. #52
    Membre éclairé Avatar de Heimdal
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 549
    Points : 718
    Points
    718
    Par défaut
    Une chose me revient immédiatement à l'esprit.
    Dans les méthodes de différentes classes, j'ai pu voir le blindage ultime:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(this == null) {
    //envoie la sauce
    }
    Enfin bon, on a tous fait à un moment ou un autre des choses pourries... OSEF

  13. #53
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Citation Envoyé par kpouer Voir le message
    Ca serait pas tout simplement un générateur de code automatique qui aurait fait ca, comme pour physx ?
    Par exemple le générateur de parseur JavaCC fait parfois des if (true).
    C'est moche mais c'est éliminé par les compilateurs heureusement
    Yep, j'ai déjà vu ça aussi dans du code généré à partir de templates, où on va laisser un test toujours faux / vrai après (dés)activation de certains modules pour éviter un traitement du fichier un peu trop lourd à faire (= rechercher la fin du bloc notamment).

    C'est pas très joli en effet, mais si cela découle réellement d'une génération automatique de code, c'est moins nuisible. Il faut alors plutôt se poser la question de savoir pourquoi ils ne font pas travailler sur le template d'origine et/ou pourquoi ils modifient manuellement du code généré...

    Si par contre c'est du code 100% manuel, alors là, oui, c'est crade au possible... Sauf s'il y a du code mort laissé exprès pour la trace "historique" des évolutions ou du debug : tous les langages ne possèdent pas non plus de préprocesseur.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  14. #54
    Membre éprouvé Avatar de Jidefix
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    742
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 742
    Points : 1 154
    Points
    1 154
    Par défaut
    Ben personnellement j'ai honte de le dire mais le pire bout de code que j'aie jamais vu ben... je crois que c'est moi qui l'ai fait

    Je l'ai remplacé depuis mais en gros c'était en java, je voulais représenter des données compliquées, triées etc. et les envoyer à une jsp pour les représenter en html. Pour une raison qui m'échappe encore aujourd'hui créer une classe répondant à mon besoin ne m'a même pas effleuré l'esprit...
    Ca a fini en imbrication de HashMap TreeMap, HashSet, et TreeSet (oui oui les quatres), à environ 8 niveaux.
    Ca marchait hein... enfin tant qu'on poussait pas trop les données à représenter :S
    Veuillez agréer nos sentiments les plus distingués. Soyez assurés de notre entière collaboration, bien à vous pour toujours et à jamais dans l'unique but de servir l'espérance de votre satisfaction, dis bonjour à ton père et à ta mère, bonne pétanque, mets ton écharpe fais froid dehors.

  15. #55
    Membre averti Avatar de yodaime
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2006
    Messages
    282
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2006
    Messages : 282
    Points : 340
    Points
    340
    Par défaut
    Moi j'ai vu cette déclaration de variable :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    bool true = 1;
    bool false = 0;
    Véridique !

  16. #56
    pjv
    pjv est déconnecté
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 11
    Points : 12
    Points
    12
    Par défaut
    Dans cet exemple Java, l'objet "service" est une instance du contrat d'interface d'un web service :

    Int ExitCode = service.getUneMethodeDeMonWebService(param1, param2, etc.).getExitCode();
    List<Class> listeObjets = service.getUneMethodeDeMonWebService(param1, param2, etc.).getListeObjets();
    String attribut1 = service.getUneMethodeDeMonWebService(param1, param2, etc.).getAttribut1();
    Long attribut2 = service.getUneMethodeDeMonWebService(param1, param2, etc.).getAttribut2();
    MaClasse attribut3 = service.getUneMethodeDeMonWebService(param1, param2, etc.).getAttribut3();
    ...
    C'est performant !

  17. #57
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    A l'instant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    A=1
    X=1
    While x<13
    "Me.ABG" & X & ".value" = A
    A = A+1
    Wend
    • Aucune déclaration
    • La chaîne "Me.ABG" & X & ".value" est destinée à être comprise par magie à l'exectution comme la propriété d'un objet et non une chaine
    • On incrémente A et on teste X pour sortir de la boucle



  18. #58
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 156
    Points : 191
    Points
    191
    Par défaut
    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
    public interface NombresConstantes {
    
    	/** 0 */
    	int CONST_0 = 0;
    
    	/** 1 */
    	int CONST_1 = 1;
    
    	/** 2 */
    	int CONST_2 = 2;
    
    	/** 3 */
    	int CONST_3 = 3;
    
    	/** 4 */
    	int CONST_4 = 4;
    
    	/** 5 */
    	int CONST_5 = 5;
    
    	/** 6 */
    	int CONST_6 = 6;
    
    	/** 7 */
    	int CONST_7 = 7;
    
    	/** 8 */
    	int CONST_8 = 8;
    
    	/** 9 */
    	int CONST_9 = 9;
    
    	/** 10 */
    	int CONST_10 = 10;
    /* Et ça continue jusqu'à 100*/
    }
    Déjà une une classe de constante pour référencer des nombres entiers, c'est très difficile d'y trouver un intérêt.
    Mais le pire est à venir . C'est l'usage de ces constantes dans le programme.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    String[] valeurs = new String[NOMBRE_COLONNE];               
    valeurs[0] = rs.getString("ChampA");                         
    valeurs[1] = rs.getString("ChampB");                         
    valeurs[2] = rs.getString("ChampC");                         
    valeurs[NombresConstantes.CONST_3] = rs.getString("ChampD"); 
    valeurs[NombresConstantes.CONST_4] = rs.getString("ChampE"); 
    valeurs[NombresConstantes.CONST_5] = rs.getString("ChampF"); 
    valeurs[NombresConstantes.CONST_6] = rs.getString("ChampG"); 
    valeurs[NombresConstantes.CONST_7] = rs.getString("ChampH");
    On remarquera l'usage mixte de constante et de nombre pour les indices du tableau.
    Et ca continue de plus belle.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monBean.setChampFoncctionnel("1".equals(valeur.substring(2, NombresConstantes.CONST_3)));
    Dans une même instruction, 3 manières de représenter un nombre.

    Que s'est il passé dans la tête du développeur ?

  19. #59
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 794
    Points
    4 794
    Par défaut économie de place
    Il y a quelques temps, j'ai été appelé pour modifier un programme en VBA (une application Access)
    Manifestement, le mec qui avait codé voulait économiser sur les lignes de code ;
    et plutôt que d'aller à la ligne pour chaque instruction, j'ai eu droit à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim t As Date: Debug.Print "début": t = DateAdd("s", 10, Now()): While t > Now(): Wend: Debug.Print "fini"
    Tous les modules étaient écrits comme ça (la peur des espaces blancs sans doute ).
    Le client était étonné que je mette deux jours à déboguer un truc tout con
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  20. #60
    Membre éclairé
    Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    624
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2004
    Messages : 624
    Points : 681
    Points
    681
    Par défaut
    En java :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for(...) {
    StringBuffer sb = new StringBuffer() ;
    sb = new StringBuffer()
    ....
    }
    On aurait pu sortir la déclaration de la variable sb de la boucle.
    Et l'instancier deux fois de suite

    Le classic :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    private int longueur(List liste) {
        return liste.size();
    }
    
    private void ajouter(List liste, String chaine) {
        liste.add(chaine) ;
    }
    Ca m'étonne pas qu'on dise que Java est lent quand on voit ça

    Ah, précision, la personne était programmeuse Java depuis 5 ans

Discussions similaires

  1. Quel est le pire bout de code que vous ayez jamais écrit ?
    Par Gordon Fowler dans le forum Débats sur le développement - Le Best Of
    Réponses: 61
    Dernier message: 31/10/2011, 12h18
  2. Quelle est la plus grosse erreur de programmation que vous ayez jamais commise ?
    Par Katleen Erna dans le forum Débats sur le développement - Le Best Of
    Réponses: 138
    Dernier message: 03/08/2011, 23h38
  3. Petit bout de code que je ne saisis pas trop
    Par MeTaLCaM dans le forum C#
    Réponses: 5
    Dernier message: 03/12/2009, 00h07
  4. [Vos débuts] Quel est le premier langage que vous ayez appris ?
    Par Commodore dans le forum La taverne du Club : Humour et divers
    Réponses: 171
    Dernier message: 02/02/2007, 14h43

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