Précédent   Forum des professionnels en informatique > Général Développement > Débats sur le développement - Le Best Of
Débats sur le développement - Le Best Of Décideurs : Le meilleur des débats sur les choix de technologies pour le développement. Ce forum est réservé aux professionnels.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Actualité déjà publiée
 
Outils de la discussion
Publicité
'
Vieux 27/09/2011, 13h26   #1
Chroniqueur Actualités
 
Inscription : juillet 2009
Messages : 2 727
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 2 727
Points : 43 820
Points : 43 820
Par défaut Quel est le pire bout de code que vous ayez jamais écrit ?

Quel est le pire bout de code que vous ayez jamais écrit ?
En avez-vous eu honte et pourquoi ?


Un professionnel sérieux se reconnaît au fait qu'il sait évaluer son travail et reconnaître ses erreurs.

Autrement dit, un développeur réfléchi est celui qui sait quand il écrit un code efficace, ou beau et qui répond aux besoins de l'utilisateur ou du client. Mais il sait aussi quand c'est exactement le contraire.

Ihssen, développeur web et membre de la rédaction de Developpez.com, n'a par exemple pas mis longtemps à avouer, non sans une certaine gêne, avoir écrit une application Web communautaire, riche en fonctionnalités... « mais sans avoir la moindre idée sur le concept de jointures en SQL ».

« Pour chaque liste d'affichage, les scripts empilaient donc une ou plusieurs requêtes supplémentaires pour chaque ligne issue de la requête principale. N + 1 était la règle, mais sur plusieurs modules on pouvait trouver des tas de requêtes de type N * M + 1 », explique-t-il.

Au final le site a pourtant fonctionné d'une manière plutôt robuste durant plusieurs années, « mais son serveur dédié a du souffrir. Heureusement qu'il y avait de la pagination ! ».

Autre horreur, Hinault Romaric, lui aussi rédacteur sur Developpez.com, se souvient que « son pire code était pour une petite application de gestion dans le cadre d’un premier stage en entreprise. Le code était bourré des concaténations de chaînes pour les requêtes SQL et de déclarations de variables sans aucune normalisation. Il n’était pas du tout optimisé (utilisation par exemple des if où des switch auraient été suffisants) et encore moins commenté».

Et de conclure « lorsque je tombe parfois sur ce code dans mes archives, il me fait aujourd'hui bien rigoler ». Mais pas à l'époque.

Après avoir abordé le sujet des pires bouts de code que vous ayez vus, et les développements dont vous êtes le plus fier, il nous a paru juste et légitime de vous demander aujourd'hui de confesser vos petites hontes.

Alors, vous ? C'était quoi votre pire bout de code ?
Gordon Fowler est déconnecté   Envoyer un message privé Réponse avec citation 30
Vieux 27/09/2011, 13h34   #2
Membre Expert
 
Avatar de fregolo52
 
Homme
Développeur C
Inscription : août 2004
Messages : 1 458
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur C

Informations forums :
Inscription : août 2004
Messages : 1 458
Points : 2 068
Points : 2 068
Le pire que j'ai fait ? Euhhh ...

C'est lié un bug incompréhensible sur une synchro multithread en C.

Seule solution trouvée : ajouter une trace dans la console (printf).
fregolo52 est déconnecté   Envoyer un message privé Réponse avec citation 11
Vieux 27/09/2011, 13h43   #3
Membre régulier
 
Inscription : mai 2009
Messages : 57
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mai 2009
Messages : 57
Points : 90
Points : 90
Par défaut vérifier que le modulo d'un nombre positif ...

soit positif ou non ...
mvvvv est déconnecté   Envoyer un message privé Réponse avec citation 21
Vieux 27/09/2011, 13h43   #4
Membre confirmé
 
Avatar de elmcherqui
 
Inscription : février 2008
Messages : 268
Détails du profil
Informations personnelles :
Âge : 24
Localisation : Maroc

Informations forums :
Inscription : février 2008
Messages : 268
Points : 265
Points : 265
Envoyer un message via MSN à elmcherqui
Le pire code que j'ai fait , c'est pendant mon tous premier stage en .NET y'a 4ans pour une ecole . j'ai du ecrire le code SQL de creation des tables en dure et qui s'execute ligne par ligne ., le tous sans aucune clef primaire ni etrangere . je n'avais pas cette notions mais je savais instinctivement qu'il ne fallais pas faire des operations d'ajout et de suppresion a l'arrache , alors j'ai moi meme cree des classes pour faire le travail du SGBD et verifier ces contrainte par code . et comme j'utilisais MySql pour faire un backup de la table j'ai du ecrire un programme en C++ pour executer des lignes de commandes sur console ( C# ne peut pas le faire a ma connaissance , car j'ai esseye et demandé ) .

c'est sur que y'a un apres , mais sa me reconforte tellement de voir le niveau ou j'etais et comment je pensais par rapport a aujourdui , mais on passe tous par la .
elmcherqui est déconnecté   Envoyer un message privé Réponse avec citation 02
Vieux 27/09/2011, 14h00   #5
Membre Expert
 
Avatar de Hellwing
 
Homme Thomas Delapierre
Ingénieur développement logiciels
Inscription : avril 2008
Messages : 456
Détails du profil
Informations personnelles :
Nom : Homme Thomas Delapierre
Âge : 29
Localisation : France

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : avril 2008
Messages : 456
Points : 1 544
Points : 1 544
Je me souviens d'un petit bout de code plus ridicule que horrible écrit lorsque j'étais encore étudiant.

J'avais écris une méthode qui prenait en paramètre un Booléen et renvoyait un booléen selon le code suivant :
Code :
1
2
3
4
Si le booléen est vrai
  alors je renvoie faux
Si le booléen est faux
  alors je renvoie vrai
Une méthode juste pour ça.

J'ai sans doute dû faire plus horrible comme code depuis, mais celui-ci est mon souvenir le plus mémorable ^^
Hellwing est déconnecté   Envoyer un message privé Réponse avec citation 91
Vieux 27/09/2011, 14h22   #6
Nouveau Membre du Club
 
Inscription : juillet 2002
Messages : 16
Détails du profil
Informations forums :
Inscription : juillet 2002
Messages : 16
Points : 26
Points : 26
En stage de première année, j'ai du ajouter des traces-logs d'informations dans un programme existant ... j'ai du copier/coller des centaines de fois le même bout de code pour écrire dans le log ...

Sinon je fais encore de temps en temps un
si (condition OU vrai)
Pour tester des morceaux de code pendant les développements.

Mais généralement je pense à claquer un //TODO au dessus.
Iridian est déconnecté   Envoyer un message privé Réponse avec citation 30
Vieux 27/09/2011, 14h23   #7
Modérateur
 
Avatar de Lapinpanda
 
Homme Adrien Marie
Développeur .NET
Inscription : juin 2009
Messages : 2 028
Détails du profil
Informations personnelles :
Nom : Homme Adrien Marie
Localisation : France

Informations professionnelles :
Activité : Développeur .NET

Informations forums :
Inscription : juin 2009
Messages : 2 028
Points : 2 850
Points : 2 850
Lapinpanda est déconnecté   Envoyer un message privé Réponse avec citation 52
Vieux 27/09/2011, 14h30   #8
Membre confirmé
 
Avatar de elmcherqui
 
Inscription : février 2008
Messages : 268
Détails du profil
Informations personnelles :
Âge : 24
Localisation : Maroc

Informations forums :
Inscription : février 2008
Messages : 268
Points : 265
Points : 265
Envoyer un message via MSN à elmcherqui
Citation:
Envoyé par Lapinpanda Voir le message
c'est assez usuelle comme code , faut juste penser a mettre un break ou un return dedans , ou bien mettre le thread qui execute cette partie en background . on utilise souvent une boucle infinie pour ecouter des Client TCP
elmcherqui est déconnecté   Envoyer un message privé Réponse avec citation 72
Vieux 27/09/2011, 14h33   #9
Membre Expert
 
Inscription : mai 2004
Messages : 1 253
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations forums :
Inscription : mai 2004
Messages : 1 253
Points : 1 290
Points : 1 290
Le pire bout de code que j'ai du écrire date de seulement trois mois.

1. Rechercher manuellement un message utilisateur dans toutes les langues et trouver un groupe de lettres commun à tous ces messages mais inexistant dans d'autres messages.
2. Attraper le message lorsqu'il est envoyé afin de mettre éventuellement un booléen à vrai
3. Utiliser le booléen plus tard pour décider d'envoyer ou non un autre message.

Pourquoi ce code ? Parce que nous n'avons (oui, au présent : il n'est pas encore corrigé, ce problème) pas de possibilité de découvrir le type de message recherché par nous même : on nous envoie 3 informations, l'une d'elle est celle qu'on cherche, mais les 3 ne sont jamais dans le même ordre. Les messages, eux, sont correctement placés dans la base de données. On a interdit aux gars du business de changer les messages sans notre accord préalable à cause de ce problème. Heureusement, le projet pour fixer cela arrive. Ouf !

Dépendre ainsi des messages utilisateurs qui peuvent changer à tout moment m'angoisse comme c'est pas possible !
dingoth est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 27/09/2011, 14h51   #10
Membre confirmé
 
Avatar de lastrecrue
 
Développeur informatique
Inscription : février 2006
Messages : 359
Détails du profil
Informations personnelles :
Âge : 29

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : février 2006
Messages : 359
Points : 233
Points : 233
en entrer de méthode j'ai mis

Code :
1
2
if(true)
throw new Excpetion("a");
lastrecrue est déconnecté   Envoyer un message privé Réponse avec citation 61
Vieux 27/09/2011, 15h12   #11
Membre chevronné
 
Avatar de Hervé Saladin
 
Développeur Web
Inscription : décembre 2004
Messages : 636
Détails du profil
Informations personnelles :
Âge : 30

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2004
Messages : 636
Points : 689
Points : 689
Mon pire code c'est lorsque j'ai débuté la prog en total autodidacte étant ado (il y a entre 15 et 20 ans).
J'avais un Thompson TO8 (il était déjà vieux pour son époque) qui se programmait en BASIC, l'édition du code lui-même se faisait en lignes de commandes car je n'avait pas d'éditeur de texte, je n'avais pas la moindre notion d'algo ni d'informatique en général, j'ai appris tout seul par jeu de façon empirique en modifiant des programmes existant pour voir ce que ça fait et en lisant le manuel utilisateur de l'ordi.
Résultat : je me suis inventé ma propre "méthode" (hum) de programmation et quand j'ai commencé à me sentir un peu plus à l'aise, j'ai créé à partir de 0 un jeu de Jackpot avec une interface graphique représentant une machine à sous avec ses symoles qui défilent, et même une animation du bras du "bandit manchot".

Le tout tenait dans un seul fichier .bas de code BASIC brut qui devait faire 1000 ou 2000 lignes numérotées (de 10 en 10 pour laisser de la place au cas où il faille par la suite insérer une ligne entre les deux), ne contenait pas la moindre fonction ni procédure ni la moindre boucle for ou while, ni de else ... toutes ces structures dont j'ignorais l'existence étaient remplacées par des test simples avec du renvoi brutal à grand renfort de GOTO du genre :
Code :
1
2
3
4
100 A=1
110 PRINT A
120 A=A+1
130 IF A<10 GOTO 100
... en fait c'était tellement "brut" avec des instruction tellement simple et décomposées, c'était presque comme de l'assembleur quand j'y repense.
Pas non plus d'expression booléenne comprenant plus d'un test (pas de ET ni de OU), et toutes les variables étaient nommées A,B,C et ainsi de suite ... et le pire c'est que ça marchait et même plutôt bien et que j'étais capable de m'y retrouver dans mon code !

Avec du recul je me demande comment je faisais pour comprendre cet infâme charabia, si je m'y replongeais aujourd'hui je serais incapable de le relire ou de refaire la même chose.
Cela dit même si c'était une horreur je n'en ai pas honte, je suis même plutôt fier d'avoir commencé comme ça parce que je trouve que j'avais quand même du mérite à avoir découvert ça tout seul sans la moindre aide et quasiment sans la moindre documentation, et à m'être suffisamment acharné pour maîtriser ça "à ma façon".
__________________
Ne cliquez pas sur ce lien
Hervé Saladin est déconnecté   Envoyer un message privé Réponse avec citation 81
Vieux 27/09/2011, 15h14   #12
Membre Expert
 
Avatar de nicorama
 
Inscription : juillet 2006
Messages : 757
Détails du profil
Informations personnelles :
Âge : 36
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : juillet 2006
Messages : 757
Points : 1 155
Points : 1 155
En PHP, au lieu de tester si la méthode d'une entité existe, j'ai fait un Try/Catch. Il me restait deux heures avant de livrer le projet et je ne savais pas comment faire ce test dans ce fichu langage. Je ne sais d'ailleurs toujours pas

J'ai pas honte, parce que j'ai gentiment mis une note dans le document de dette technique.
__________________
Robusta Web Library : Clients RESTful open source pour Java, Android & GWT.
API Simple et Productive. Avec style.
nicorama est déconnecté   Envoyer un message privé Réponse avec citation 31
Vieux 27/09/2011, 15h15   #13
Membre expérimenté
 
Avatar de octal
 
Inscription : septembre 2004
Messages : 369
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 369
Points : 535
Points : 535
Citation:
Envoyé par Lapinpanda Voir le message
Où est le problème dans ce code? mon PIC16F84 il aime bien ce code là
__________________
http://www.neaticons.com png glyphs and icons for website and application developpers.
http://www.pocketmt.com GLCD Font Creator home site.
octal est déconnecté   Envoyer un message privé Réponse avec citation 21
Vieux 27/09/2011, 15h16   #14
Membre éclairé
 
Étudiant
Inscription : novembre 2010
Messages : 232
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : novembre 2010
Messages : 232
Points : 325
Points : 325
Code :
for (i = 0; i < j; ++i);
au lieu d'un simple
J'étais fatigué quand j'ai écrit ça. Je vous dis pas ma tête quand le lendemain je suis retombé dessus.
__________________
"L'insanité consiste à répéter la même action dans l'espoir d'aboutir à un résultat différent" Albert Einstein
----------------------
T.O.A.O 6-MarViN
6-MarViN est déconnecté   Envoyer un message privé Réponse avec citation 101
Vieux 27/09/2011, 16h12   #15
Membre chevronné
 
Développeur informatique
Inscription : avril 2009
Messages : 272
Détails du profil
Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : avril 2009
Messages : 272
Points : 613
Points : 613
Citation:
Envoyé par nicorama Voir le message
En PHP, au lieu de tester si la méthode d'une entité existe, j'ai fait un Try/Catch. Il me restait deux heures avant de livrer le projet et je ne savais pas comment faire ce test dans ce fichu langage. Je ne sais d'ailleurs toujours pas

J'ai pas honte, parce que j'ai gentiment mis une note dans le document de dette technique.
http://www.php.net/manual/fr/function.method-exists.php

xelab est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 27/09/2011, 16h22   #16
Membre chevronné
 
Homme
Inscription : mars 2011
Messages : 431
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : mars 2011
Messages : 431
Points : 785
Points : 785
Un vendredi soir, une fonction de tri sur un std::vector en o(n^3) (sisi, c'est possible...)

Le lundi matin en arrivant je me suis souvenu que la fonction std::sort existait...
__________________
La perfection est atteinte, non pas lorsqu’il n’y a plus rien à ajouter, mais lorsqu’il n’y a plus rien à retirer. - Antoine de Saint-Exupéry
pyros est déconnecté   Envoyer un message privé Réponse avec citation 30
Vieux 27/09/2011, 17h32   #17
Membre confirmé
 
Avatar de rt15
 
Homme
Développeur informatique
Inscription : octobre 2005
Messages : 142
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 27
Localisation : France, Savoie (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : octobre 2005
Messages : 142
Points : 240
Points : 240
Je devais porter une appli C/C++ vers Windows 64 bits.
Le problème est que cette appli nécessitait une XXX.dll propriétaire dispo en 32 bit uniquement (Et exposant une trentaine de fonctions avec la convention d'appel cdecl).

Impossible d'utiliser une dll 32 dans un processus 64. Du coup j'ai fait un wrapper :
appli 64 bit -> dll 64 bit reprenant l'interface de XXX.dll -> Serveur COM en VB6 -> dll 32 bit exposant l'interface de XXX.dll, mais en convention stdcall -> XXX.dll.

Cette usine à gaz est une solution temporaire faite à la va vite en attendant le portage de XXX.dll. Mais depuis je fais des cauchemars en imaginant que cet infâme sandwich puisse malencontreusement partir en production...
rt15 est déconnecté   Envoyer un message privé Réponse avec citation 50
Vieux 27/09/2011, 21h14   #18
Membre Expert
 
Inscription : février 2005
Messages : 1 225
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 1 225
Points : 1 615
Points : 1 615
Ma premiére appli pro.

Je n'avais jamais fait de vrai dev pro et donc entre la bd (access évidemment), les tables sans index, les requêtes codées en dur et les écrans multicolors (en dehors des icones bart simpson).

Le pire c'est qu'elle est en prod et fonctionne tous les jours...
B.AF est déconnecté   Envoyer un message privé Réponse avec citation 12
Vieux 27/09/2011, 21h15   #19
Membre du Club
 
Homme Tuatini GODARD
Développeur Java
Inscription : décembre 2010
Messages : 68
Détails du profil
Informations personnelles :
Nom : Homme Tuatini GODARD
Localisation : Polynésie

Informations professionnelles :
Activité : Développeur Java

Informations forums :
Inscription : décembre 2010
Messages : 68
Points : 67
Points : 67
int pasBien;
int * maladie;
int q = sizeof(maladie) * 5;

if(pasBien){
maladie = (* int) malloc(q);
}

Godestiny est déconnecté   Envoyer un message privé Réponse avec citation 02
Vieux 27/09/2011, 22h09   #20
Membre confirmé
 
Homme
Inscription : octobre 2010
Messages : 37
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Suisse

Informations forums :
Inscription : octobre 2010
Messages : 37
Points : 217
Points : 217
J'ai lu dans le code d'un enseignant en école d'ingénieur :
Citation:
while(nombre >= 256)
{
nombre = nombre % 256;
}
Je crois qu'il n'avait pas totalement assimilé le concept "reste de la division entière".
redbullch est déconnecté   Envoyer un message privé Réponse avec citation 72
Réponse Actualité déjà publiée
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h51.


 
 
 
 
Partenaires

Hébergement Web