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. #61
    Nee
    Nee est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    50
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 50
    Points : 56
    Points
    56
    Par défaut
    Moi j'ai vu quelque chose comme ça en PHP, il fallait y penser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    try {
      if (! uneFunction()){
         throw new Exception();
      }
    } catch(Exception $e){
       return false;
    }
    we are the knights who said nee !

  2. #62
    Inactif  
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    357
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 357
    Points : 637
    Points
    637
    Par défaut
    Citation Envoyé par bubulemaster Voir le message
    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
    Bof, le compilo optimise tout ça.

  3. #63
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Bonjour,

    Des perles, ont n'en vois souvent, souvent marrantes.

    En voila une pour moi :
    Lors d'un stage(en seconde) dans le réseau informatique d'une mairie(je ne venais pas pour du PHP), lorsque mon maitre de stage a vu que je connaissais le PHP il à sauter sur l'occasion pour me faire débugger une application réseau de gestion.

    Le but du code était de sélectionner certaines personnes dans une liste grâce à un statut...
    La boite à mis la clé sous la porte(ce que je comprends maintenant), et ne pouvait donc pas assurer la maintenance, et donc l'application ne sélectionnait pas en fonction du critère.
    Je vous laisse voir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    $statut = (isset($_POST['statut']))?$_POST['statut']:'all';
    
    if($statut == 'all'){
    $rq = "SELECT * FROM table WHERE statut='all'";
    }elseif($statut == 'chose'){
    $rq = "SELECT * FROM table WHERE statut='all'";
    }//Sur 7 critères
    ...
    <select name="statut"><option value="all">Tous</option><option value="chose">Chose</option>//de même sur 7 critères</select>
    C'est assez marrant, ce que l'on peut faire pour ce compliquer la vie.

    Yacodo

  4. #64
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 22
    Points : 23
    Points
    23
    Par défaut
    Citation Envoyé par Alain Defrance Voir le message
    Par contre c'est faux de dire que == ne marche pas il a juste un comportement un peu spécial. Il ne compare pas les valeurs mais les adresses en mémoire. Le fait est que dans ce cas préci pour peu que l'on passe un litéral à la méthode convert, le programme marchera normalement. En effet la JVM implémente le pattern flyweight qui construit un parc de données pour les littéraux. De ce fait les littéraux sont partagés dans tous le programme. Puisqu'ils sont partagés alors quand on fait "1" == "1", alors on compare les deux adresses, qui pointent vers la même instance en mémoire, et qui du coup est égal. En fait on fait un test qui ne fait pas ce qu'on veut mais qui au final donnera le bon résultat. Pour être certain que le code marche il faudrait non pas utiliser value mais value.intern(). Pour plus de détails pous pouvez lire ce billet.
    J'avais écrit ça une fois sans faire gaffe en Java, et je m'en suis rendu compte dans le debugger. Maintenant, voilà pourquoi je me permets de faire un commentaire : le compilateur (Java 6) avait remplacé le == par un appel à equals sans me le dire, et le watch du debugger que j'avais fait par copier/coller n'avait pas fait cette substitution. Il m'en a fallu du temps pour comprendre ça...

  5. #65
    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
    Citation Envoyé par Furikawari Voir le message
    Bof, le compilo optimise tout ça.
    Oui mais bon, ça veut dire que la personne n'a pas vraiment compris le Java et même la programmation.
    Pour qu'un compilateur optimise, il faut qu'il y ait des programmeurs qui est compris la programmation et la programmation à la one again.

    Pour me rattrapé je me suis rappelé d'un code comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    int a ;
    String b;
    StringBuilder c;
    ...
    Que des variables à 1 lettre, sympa ça ! Mais bon, c'est vrai que la personne qui avait fait ce code était un artiste

  6. #66
    Membre confirmé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2006
    Messages
    572
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 572
    Points : 631
    Points
    631
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    if (resultat <= 10) {
       traitement();
    }
    else if (resultat > 10) {
      autreTraitement();
    }
    else {
       traitement(); // oui oui, le meme qu'au dessus, on sait jamais.
    }
    Venez partager vos expériences au sein d'un projet sur slicesofit, agile & amélioration continue

  7. #67
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 22
    Points : 23
    Points
    23
    Par défaut
    Alors moi, je pense que le truc le plus incroyable a été de chercher un jour sous quelle condition je recevais la valeur "E000:R" via un socket TCP. Je suis tombé sur le code suivant :
    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
        if(
            !checkTag(session->barcode, "TRANSIT") &&
            (
             (!strcmp(mode, F_IT) && ((g_comlabel!=0 && !checkTagValue(session->barcode, "TYPE", "COMMON")) || checkTag(session->barcode, "RELABEL")) && (session->isnprint || !checkTagValue(session->barcode, "CPEX", "N"))) ||
             (!strcmp(mode, "RELABEL") && !strcmp(szStr1, "FR")) ||
             (!strcmp(mode, F_IT) && checkTag(session->barcode, "REBUILD")) ||
             (g_comlabel && strcmp(mode, F_IT) && strcmp(mode, "RELABEL") && (!checkTagValue(session->barcode, "TYPE", "COMMON") /*|| checkTagValue(session->barcode, "EXPORT", "Y")*/) && (session->isnprint || !checkTagValue(session->barcode, "CPEX", "N")) ) ||
             (!g_comlabel && strcmp(mode, F_IT) && strcmp(mode, "RELABEL") && checkTag(session->barcode, "RELABEL")) ||
             (g_frinitcheck && !strcmp(mode, F_IT) && !checkTag(session->barcode, "COMIMP") && checkTagValue(session->barcode, "TYPE", "COMMON") && !frCheckRoute(session->barcode))
            ) 
          )
        {
            strcpy(data, "E000:R");
            // Autres trucs imbitables
        }
    À ce jour, je ne sais toujours pas quelle est la condition réelle, même si j'ai résolu mon problème par un autre moyen

  8. #68
    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 bubulemaster Voir le message
    Que des variables à 1 lettre, sympa ça ! Mais bon, c'est vrai que la personne qui avait fait ce code était un artiste
    Bof, moi ça me choque pas, du moment que ce sont des variables locales... c'est même plus clair je trouve...

    Qui n'a jamais programmé une boucle for avec un compteur "i"?

    "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

  9. #69
    Membre éprouvé
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Points : 935
    Points
    935
    Par défaut
    Une que j'aime bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (condition == true) {
           [...]
    }

  10. #70
    Futur Membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 4
    Points : 7
    Points
    7
    Par défaut
    Dans mon ancienne équipe, il y avait un morceau de code qui nous a fait marré pendant longtemps et qui me fait marrer encore en y pensant

    On bossait sur des interfaces graphiques SWING et il y avait une correction de bug qui consistait à griser un champ. La correction faite par le développeur, ça marchait correctement. Seulement, on a été intrigué par le gris qui était légèrement différent que les autres champs. On est allé voir dans le code et la fou rire général, ça donné ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    JTextField textField = new JTextField();
    
    // Passage du text field à non éditable.
    textField.setEditable(false);
    
    // Mais comme le text field actif, il n'est donc pas grisé, alors on change la
    //couleur du champ!!
    textField.setBackground(Color.GRAY);

  11. #71
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2008
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2008
    Messages : 519
    Points : 311
    Points
    311
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $req_sql = "SELECT parrain FROM membres WHERE id=$id";
    $req = mysql_query($req_sql);
    while ($row = mysql_fetch_assoc($req))
    {
         $varparrain = $row["parrain"];
    }
    mysql_free_result($req);
    C'était le seul moyen que j'avais pour lancer une requête ...

  12. #72
    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
    Je viens de tomber à l'instant sur ce code :

    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
    try {
        try {
            ...
        } catch (TrucException e) {
            throw new VenteException("message") ;
        }
        
        ...
        
        try {
            ...
        } catch (TrucException e) {
            throw new VenteException("message") ;
        }
    
        ...
            
        try {
            ...
        } catch (TrucException e) {
            throw new VenteException("message") ;
        }
    } catch (VenteException e) {
        JournalException ex = new JournalException() ;
        ex.setMessage(e.getMessage) ;
        throw ex ;
    }
    Je pense qu'on peut lever l'exception JournalException directement non ?

  13. #73
    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
    une state machine avec 70 états, et un bon paquet de transition entre ces derniers.

    a maintenir dans un soft c'est le pied
    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

  14. #74
    Membre éclairé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    605
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 605
    Points : 670
    Points
    670
    Par défaut
    Vu en COBOL: La vraie programmation séquentielle.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    AFFICHAGE DE L'ECRAN ET SAISIE
    
    SI ERREURS DE SAISIE
       AFFICHAGE DE L'ECRAN ET SAISIE
       
       SI ERREURS DE SAISIE
          AFFICHAGE DE L'ECRAN ET SAISIE
         
           SI ERREURS DE SAISIE
              AFFICHAGE DE L'ECRAN ET SAISIE
    
               SI ERREURS DE SAISIE
                  On quitte le programme. 
                  Parce que bon, on a laissé à l'utilisateur quatre chances, non?

  15. #75
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2005
    Messages
    513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 513
    Points : 416
    Points
    416
    Par défaut
    Citation Envoyé par grunt2000 Voir le message
    Vu en COBOL: La vraie programmation séquentielle.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    AFFICHAGE DE L'ECRAN ET SAISIE
    
    SI ERREURS DE SAISIE
       AFFICHAGE DE L'ECRAN ET SAISIE
       
       SI ERREURS DE SAISIE
          AFFICHAGE DE L'ECRAN ET SAISIE
         
           SI ERREURS DE SAISIE
              AFFICHAGE DE L'ECRAN ET SAISIE
    
               SI ERREURS DE SAISIE
                  On quitte le programme. 
                  Parce que bon, on a laissé à l'utilisateur quatre chances, non?
    je crois que l'on tient un des meilleurs code là ...
    Jérémy
    Ingénieur Conception et Développement

  16. #76
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par Népomucène Voir le message
    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
    J'ai commencé à tripatouiller du code au début des années 1980, quand les processeurs étaient en 8 bit et la mémoire vive de 1 kilo-octets (oui les p'tits jeunes, vous avez bien lu ! ).

    A l'époque, on programmait en Basic interprété et on utilisait souvent la ligne à multiples instructions séparées par : parce que tout ce qui était écrit dans le programme allait dans la mémoire, notamment je crois me souvenir les numéros de lignes et les commentaires. Du coup on économisait les lignes et quand le programme (ou le bout de programme) fonctionnait, on supprimait les commentaires !

    Je me souviens avoir passé quelques heures à traquer le moindre caractère inutile sur un programme pour qu'il tienne en mémoire !

    Aujourd'hui c'est l'inverse !
    Depuis que j'examine des programmes PHP faits par d'autres, je suis très étonné de voir des paquets de require qui chargent des paramètres et des fonctions inutilement chargés ou lancées dans le contexte où elles se trouvent.
    Un exemple : OBM charge dès le démarrage un tas de paramètres concernant par exemple le calendrier avant même qu'on soit entré dans l'application. Et nous ne nous servons même pas de la fonction de calendrier de ce logiciel !
    Ce serait vraiment plus dur de charger les paramètres du calendrier seulement quand on veut utiliser cette fonction ?

    Et quand dans un programme on a de l'objet, du procédural, des modules ne contenant que des fonctions, d'autres contenant du code actif et des fonctions qui ne seront pas forcément utilisées dans le module où elles se trouvent, du mélange de Perl, PHP, HTML (avec ou sans echo), javascript, CSS... c'est galère pour s'y retrouver.

    Tout ça pour dire que l'extrait cité en tête de ce message vient peut-être d'un dinosaure de l'informatique dans mon genre et qui a gardé de mauvaises habitudes de sa jeunesse.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  17. #77
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 868
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 868
    Points : 16 258
    Points
    16 258
    Par défaut
    Bon, c'est peut-être pas le pire que j'ai pu voir, mais voici un exemple de code qui m'a été donné de voir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    formate_code(document.form_sites.ban_code_js_<?php echo $id_ban; ?>,'<scr'+'ipt language="javascript" type="text/javascript" src="<?php echo $chemin; ?>/ban.php?ban=<?php echo $id_ban; ?>&url='+escape(document.form_sites.site_url.value)<?php if (in_array("style",$parametres)) echo "+'&params=id_style%3D'+document.form_sites.choix_style.value"; if (in_array("MB directe",$parametres)) echo "+'&params=bg%3D'+document.form_sites.bg.value+'%26txt%3D'+document.form_sites.txt.value+'%26link%3D'+document.form_sites.link.value"; ?>+'"></scr'+'ipt>');
    Une ligne de 547 caractères.

    Mieux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onclick="if(confirm('En cliquant sur OK vous ne supprimez que le sous-domaine \''+sous_domaine[f.choix_style.options[f.choix_style.selectedIndex].value]+'\'.\n(Le style \''+f.choix_style.options[f.choix_style.selectedIndex].text+'\' ne sera pas supprim?)\n\n/!\\ ATTENTION /!\\ \n les inscrits que vous avez avec cette marque blanche seront irr?m?diablement perdus !\n\n\nEtes-vous s?r ?')&&confirm('Etes-vous vraiment s?r de vouloir supprimer les marques blanches \''+sous_domaine[f.choix_style.options[f.choix_style.selectedIndex].value]+'\' et tous les inscrits que vous avez g?n?r?s avec celles-ci ?')){document.location='?page=delete_style&domaine='+f.choix_style.options[f.choix_style.selectedIndex].text}">
    Une ligne de 713 caractères.

    Je dois en avoir une qui traine de plus de 800 caractères mais je n'arrive pas à remettre la main dessus.


    Sinon, le pire que j'ai pu voir, c'est des noms de variables/fonctions PHP avec des accents.

    Ah non, que dis-je, c'était juste pour me mettre dans le bain, après il a fallu que ce soit les noms de bases/tables/champs MySQL qui prennent tous les caractères spéciaux et espaces imaginables.

  18. #78
    Membre averti
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2004
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2004
    Messages : 265
    Points : 342
    Points
    342
    Par défaut
    Citation Envoyé par phantomass Voir le message
    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 ?
    Bonjour,

    ça m'a fait rire, j'ai eu le même, mais j'ai eu l'explication, quand on utilise checkstyle (ou d'autres outils surement), on peut interdire l'utilisation de "magic number" (de nombres utilisés en dur, en toutes logique si j'utilise le nombre 32 dans un programme il a une signification et je peux donc lui créer une constante ayant un nom qui ait un sens) mais certains développeurs ne comprenant pas pourquoi ils ont une erreur (ou un warning) et a qui on n'a pas expliqué les principes de bases de la qualité de codes font ce genre d'abbérations.

    C'est de la qualité pour faire plaisir à l'outil => on abouti à l'inverse d'un code de qualité.

  19. #79
    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
    vu en fortran77 (code que j'ai vite corrigé quand je suis tombé dessus) des saut dans des étiquette à l'intérieur de blocs.

    on me pardonnera la syntaxe ça fait longtemps que je n'en ai pas fait


    imaginez que votre code tombe sur un else sans le if associé.....


    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
       
          <quelque part>
           goto Etiq
       
    
          < plein de code entre les deux histoire de ne pas le voir tout de suite> 
    
    
             if X = Y THEN
    etiq      
                 Traitement           
             Else
    etiq2       
                Traitement2
             endif
    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

  20. #80
    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 791
    Points
    4 791
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    Tout ça pour dire que l'extrait cité en tête de ce message vient peut-être d'un dinosaure de l'informatique dans mon genre et qui a gardé de mauvaises habitudes de sa jeunesse.
    D'après le client, il s'agit d'un programmeur "jeune" (<30 ans !)
    qui a depuis émigré au Vietnam pour monter sa boîte de développement là-bas
    Aux dernières nouvelles, il refuse d'assurer la maintenance à distance de son application.
    Je me demande bien pourquoi
    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/

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