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. #241
    Membre du Club
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 36
    Points : 59
    Points
    59
    Par défaut
    Personnellement, ce que je reproche le plus à un développeur, ce n'est pas de faire des boulettes, ça arrive (j'aurais tendance à davantage reprocher à leurs responsables de ne pas les avoir assez encadrés). C'est de ne pas tester ce qu'il fait, parce que là c'est carrément un manque de conscience professionnelle.

    Un petit exemple de code PL/SQL, réalisé par un gars qui bossait depuis un an sur la même application (J2EE et énormément de PL/SQL)... Syntaxe peut-être approximative, PL/SQL n'est pas ma tasse de thé. Etonnamment, ça n'a jamais marché. Plus étonnant encore, ça n'a été découvert qu'à la mise en production, après que la maintenance soit passée chez nous.
    SELECT COUNT(*) INTO v_count FROM table WHERE /* des conditions */;
    IF count != -1 THEN
    RETURN code_erreur;
    END IF;
    Quelques petits bouts que j'ai pu voir aussi :
    if (machin.equals(null)) { ...
    List result = new ArrayList();
    for(int i = 0; i<myList.size(); i++) {
    result.add(myList.get(i));
    if (/* je sais plus quels critères */) {
    result.remove(myList.get(i));
    }
    }
    J'ai également eu droit à un superbe bloc d'une centaine de lignes, dont je n'ai jamais été complètement sûr de ce qu'il faisait. Après tests et étude algorithmique, il me semblait bien que la réponse était "absolument rien" (parcours de listes et de maps en tous sens avec ajouts et suppressions pour revenir au final à l'état initial). Faute de temps pour vraiment vérifier, j'ai mis un commentaire pour signaler le fait. Je suis sûr qu'il y est encore aujourd'hui.

    En vrac, dans la catégorie style pourri, je demande la JSP d'environ 9000 lignes avec davantage de code Java que de balises. Dans la catégorie "incompétent roi du monde", je connais un "expert technique" (c'est son titre officiel) qui explique que la mutualisation de code c'est mal : si il y a un bug dans une fonction réutilisée, on va le retrouver partout...

  2. #242
    Membre du Club Avatar de Legarsdelouest
    Homme Profil pro
    Work Package Manager
    Inscrit en
    Août 2009
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Work Package Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2009
    Messages : 52
    Points : 64
    Points
    64
    Par défaut
    Au passage, une que j'ai trouvée dans le code d'un ami :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
            Dim x As Integer = 0
    
            While Not x = 51
                Instructions
                x = x + 2
    
            End While
    No comment
    C'est parce que l'on a visé les étoiles qu'on est allé sur la Lune !

  3. #243
    Membre expert Avatar de jabbounet
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2009
    Messages
    1 909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 909
    Points : 3 284
    Points
    3 284
    Par défaut
    Citation Envoyé par Boojum Voir le message
    En vrac, dans la catégorie style pourri, je demande la JSP d'environ 9000 lignes avec davantage de code Java que de balises. Dans la catégorie "incompétent roi du monde", je connais un "expert technique" (c'est son titre officiel) qui explique que la mutualisation de code c'est mal : si il y a un bug dans une fonction réutilisée, on va le retrouver partout...
    Il oubli que de factoriser fait qu'il y'a moins de lignes a maintenir et donc peu rendre la tache de maintenance moins difficile.
    Si le bug est dans un des algorithme qui n'est pas "mutualisé" on le retrouve dans toutes les implémentations de l'algorithme et qu'il faut donc le corriger partout (risque d'oubli), alors que si c'est factorisé dans une fonction dont le nom permet de comprendre clairement ce que cela fait il n'y a qu'une seul et unique correction à faire.

    Personnellement je pense que factoriser correctement son code limite énormément de dégats et que c'est l'une des bases de la programmation.
    bazar: http://www.improetcompagnie.com/publ...ctacles-6.html

    BÉPO la disposition de clavier francophone, ergonomique et libre: http://bepo.fr/wiki/Accueil

    Emacs Wiki: http://www.emacswiki.org/

    En attente de ce que produira: http://www.pushmid.com

  4. #244
    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
    Citation Envoyé par jabbounet Voir le message
    Personnellement je pense que factoriser correctement son code limite énormément de dégats et que c'est l'une des bases de la programmation.
    Je pense pas que tu aie beaucoup de monde à convaincre ici
    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.

  5. #245
    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 jabbounet Voir le message
    Il oubli que de factoriser fait qu'il y'a moins de lignes a maintenir et donc peu rendre la tache de maintenance moins difficile.
    Si le bug est dans un des algorithme qui n'est pas "mutualisé" on le retrouve dans toutes les implémentations de l'algorithme et qu'il faut donc le corriger partout (risque d'oubli), alors que si c'est factorisé dans une fonction dont le nom permet de comprendre clairement ce que cela fait il n'y a qu'une seul et unique correction à faire.

    Personnellement je pense que factoriser correctement son code limite énormément de dégats et que c'est l'une des bases de la programmation.
    Ca sent le vécu
    http://alaindefrance.wordpress.com
    Certifications : SCJP6 - SCWCD5 - SCBCD5 - SCMAD1
    SDE at BitTitan

  6. #246
    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
    Citation Envoyé par Legarsdelouest Voir le message
    Au passage, une que j'ai trouvée dans le code d'un ami :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
            Dim x As Integer = 0
    
            While Not x = 51
                Instructions
                x = x + 2
    
            End While
    No comment
    J'imagine que dans les instructions doit y avoir une condition où il ajoute 1, sinon c'est boucle infinie.

  7. #247
    Membre du Club Avatar de Legarsdelouest
    Homme Profil pro
    Work Package Manager
    Inscrit en
    Août 2009
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Work Package Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2009
    Messages : 52
    Points : 64
    Points
    64
    Par défaut
    C'est bien une boucle infinie qui est là . Et je crois que j'ai du faire la même faute la toute première fois que j'ai commencé à coder

    Ah nostalgie.......
    C'est parce que l'on a visé les étoiles qu'on est allé sur la Lune !

  8. #248
    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 Jidefix Voir le message
    Bon alors juste pour la petite histoire, j'ai été promu par ma SSII expert junior webmethods/java au bout d'un an de vie professionelle
    Moi je dit pas non m'enfin je le crie pas partout non plus (qu'est ce qu'ils m'ont mis au boulot...)
    ah expert junior, ils sont marrant quand même les SSII pour inventer des non-sens, soit on est expert soit on est junior

  9. #249
    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
    Citation Envoyé par kpouer Voir le message
    ah expert junior, ils sont marrant quand même les SSII pour inventer des non-sens, soit on est expert soit on est junior
    Ben en gros faut interpréter le "expert" comme un "a dejà travaillé sur" et le junior comme un "mais pas trop longtemps donc soyez gentil avec lui"
    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.

  10. #250
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 537
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 537
    Points : 2 548
    Points
    2 548
    Par défaut
    Citation Envoyé par jabbounet Voir le message
    Personnellement je pense que factoriser correctement son code limite énormément de dégats et que c'est l'une des bases de la programmation.
    J'irais bien plus loin : si tu as deux bouts de code qui ont des similarités, c'est que ta conception est foireuse.

    J'ajouterais que non seulement le code dupliqué est à corriger partout en cas de bugs (et il y a risque d'oubli) mais que plus le code est utilisé, et dans des cas différents, et plus les bugs seront trouvés rapidement et corrigé rapidement.

    Moins le code est exécuté, et plus il y aura des problèmes dedans.

  11. #251
    Membre expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Points : 3 675
    Points
    3 675
    Par défaut
    Dans l'absolu ok, mais dans la vraie vie c'est rarement comme ça.

    Même avec les meilleures intentions du monde, je me demande quel projet peut se vanter d'être parfaitement implémenté... Ils ont tous des défauts, il faut faire la différence entre les défauts graves qui auront des conséquences à long terme, et les défauts mineurs...

    La plupart des défauts sont souvent liés à l'historique d'une application... Les premières versions sont toujours impecs niveau architecture, puis au fur et à mesure des changements/évolutions de specs, les coûts de refactoring seraient trop importants, alors on dégrade la qualité structurelle pour améliorer la qualité fonctionnelle...

    C'est toujours facile de critiquer un code. C'est beaucoup plus dur de reprendre un projet en se disant "ok il a son vécu, il a ses défauts, faut bien vivre avec et malgré tout je dois faire mon boulot". Ne pas confondre duplicata de code et code moisi....

    "Le plug gros problème des citations trouvées sur internet, c'est qu'on ne peut jamais garantir leur authenticité"

    Confucius, 448 av. J-C

  12. #252
    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
    Citation Envoyé par Legarsdelouest Voir le message
    C'est bien une boucle infinie qui est là . Et je crois que j'ai du faire la même faute la toute première fois que j'ai commencé à coder

    Ah nostalgie.......
    Dur dur, rendu à ce stade faut reprendre les bases, ou les continuer

    Mais bon, c'est avec des erreurs comme çà qu'on apprend, l'important c'est d'avoir assimilé pourquoi cette erreur et comment la résoudre.

  13. #253
    Membre du Club Avatar de Legarsdelouest
    Homme Profil pro
    Work Package Manager
    Inscrit en
    Août 2009
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Work Package Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2009
    Messages : 52
    Points : 64
    Points
    64
    Par défaut
    Exactement, je n'aurai pas dit mieux

    Et que celui qui n'a jamais codé une application sans avoir de problèmes lors des tests me jettent la première pierre
    C'est parce que l'on a visé les étoiles qu'on est allé sur la Lune !

  14. #254
    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 060
    Points
    32 060
    Par défaut
    Citation Envoyé par Legarsdelouest Voir le message
    Exactement, je n'aurai pas dit mieux

    Et que celui qui n'a jamais codé une application sans avoir de problèmes lors des tests me jettent la première pierre
    j'irais plus loin : si du premier coup la compil passe impec, je trouve ça louche. Et si en plus je ne trouve pas d'erreur fonctionnelle à l'exécution, c'est qu'il y a baleine sous gravillon.....
    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.

  15. #255
    Membre du Club Avatar de Legarsdelouest
    Homme Profil pro
    Work Package Manager
    Inscrit en
    Août 2009
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Work Package Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2009
    Messages : 52
    Points : 64
    Points
    64
    Par défaut
    Citation Envoyé par el_slapper Voir le message
    Et si en plus je ne trouve pas d'erreur fonctionnelle à l'exécution, c'est qu'il y a baleine sous gravillon.....
    Je mets 20/20 pour l'expression
    C'est parce que l'on a visé les étoiles qu'on est allé sur la Lune !

  16. #256
    Membre à l'essai
    Inscrit en
    Mars 2003
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 11
    Points : 18
    Points
    18
    Par défaut Tant que VRAI est non-égal à FAUX (y'a du vrai là-dedans...)
    Moi qui ne suis pas DU TOUT comme vous tous développeur professionnel, certaines de vos interventions me laissent un rien rêveur...

    Dans la catégorie un rien banale (et déjà évoquée dans ce fil) , je reste toujours étonné de lire des choses comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { ... }
    dans des pages comme
    http://php.net/manual/fr/function.fgetcsv.php

    Exemple évidemment repris partout...
    S.M.C.J.

  17. #257
    Membre éclairé Avatar de metagoto
    Profil pro
    Hobbyist programmateur
    Inscrit en
    Juin 2009
    Messages
    646
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Hobbyist programmateur

    Informations forums :
    Inscription : Juin 2009
    Messages : 646
    Points : 845
    Points
    845
    Par défaut
    Citation Envoyé par Sébastien Cosson Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { ... }
    Quel est le problème ?

  18. #258
    Membre à l'essai
    Inscrit en
    Mars 2003
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 11
    Points : 18
    Points
    18
    Par défaut
    Ne serait-ce pas plus simple d'écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while ($data = fgetcsv($handle, 1000, ",")) { ... }
    ???
    S.M.C.J.

  19. #259
    Membre expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Points : 3 675
    Points
    3 675
    Par défaut
    Citation Envoyé par Sébastien Cosson Voir le message
    Ne serait-ce pas plus simple d'écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while ($data = fgetcsv($handle, 1000, ",")) { ... }
    ???
    ce n'est pas pareil...

    !== est un test d'égalité et de type, pas seulement d'égalité, donc rien de choquant
    "Le plug gros problème des citations trouvées sur internet, c'est qu'on ne peut jamais garantir leur authenticité"

    Confucius, 448 av. J-C

  20. #260
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 537
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 537
    Points : 2 548
    Points
    2 548
    Par défaut
    Dans le premier cas, il faut que $data vaille false pour s'arrêter.

    Dans l'autre, la boucle peut s'arrêter si $data vaut "", 0 ou tout autre valeur qui sera castée en false pour effectuer le test.

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