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; }
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 !
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 :
C'est assez marrant, ce que l'on peut faire pour ce compliquer la vie.
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>
Yacodo
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...
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 :
Que des variables à 1 lettre, sympa ça ! Mais bon, c'est vrai que la personne qui avait fait ce code était un artiste
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 int a ; String b; StringBuilder c; ...
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
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 :
À 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
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 }
"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
Une que j'aime bien
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 if (condition == true) { [...] }
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);
C'était le seul moyen que j'avais pour lancer une requête ...
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);
Je viens de tomber à l'instant sur ce code :
Je pense qu'on peut lever l'exception JournalException directement non ?
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 ; }
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
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?
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 !
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 :
Une ligne de 547 caractères.
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 "+'¶ms=id_style%3D'+document.form_sites.choix_style.value"; if (in_array("MB directe",$parametres)) echo "+'¶ms=bg%3D'+document.form_sites.bg.value+'%26txt%3D'+document.form_sites.txt.value+'%26link%3D'+document.form_sites.link.value"; ?>+'"></scr'+'ipt>');
Mieux :
Une ligne de 713 caractères.
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}">
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.
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é.
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
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/
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager