|
Publicité | |||||||||||||||||||||||
|
|
#1 (permalink) |
![]() Date d'inscription: juillet 2009
Messages: 905
|
Le pire bout de code que vous ayez jamais vu
Qui l'a fait ? Pourquoi ? Pourquoi était-il si horrible ? Il vous a fait rire. Ou hurler. Ou les deux. Vous n'en avez pas cru vos yeux et pourtant il était là. Et bien là. Un humain avait écrit ça. Il est resté dans votre mémoire comme le pire bout de code que vous ayez jamais vu. Quelque fois ce "pire code" n'est pas trop méchant. Il relève juste du non sens : Code java :
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... D'autres sont juste parfaitement inutiles : Code java :
public Object toObject(String value){ return (Object) value; } En Java tout est Object. Aucun besoin d'effectuer un cast donc. Mais ce code peut aussi aller jusqu'à vous hanter tant il est horrible. A se demander ce qui a bien pu passer par la tête du "créateur" de ce "monstre", voire si celui-ci sait dans quel langage il code : Code java :
public void close(InputStream stream){ stream = null; } InputStream est un flux vers une ressource. Pour le fermer, par exemple, il faut invoquer sa méthode close(), mais dans ce cas, le "créateur" s'est contenté de le mettre à null. Les développeurs Java seront d'accord pour admettre l'inutilité crasse de ce bout de code : les variables sont passées par copie de la valeur, donc ce ne sera "null" que dans la méthode. Allez une dernière pour la route (pardon pour les yeux) : Code java :
public int convert(String value){ if(value == "0"){ return 0; } else if (value == "1"){ return 1; } else if (value == "2"){ return 2; } // jusqu'à 25 ! else { return -1; } } Tout cela est faisable en une seule et simple ligne de Java (avec Integer.parseInt(String value) ). Mais le pire c'est que, en plus, la méthode de cet autre "créateur fou" ne fonctionne pas du tout. En Java, on ne peut pas faire value == "1" pour comparer sa valeur (il faut faire "1".equals(value) ). Invention de syntaxe, non-sens, aberration dans les raisonnements, vous avez déjà dû croiser ces codes cauchemardesques. Que vous soyez développeur JavaScript, PHP, Ruby, C, C++, C#, Assembleur, Pascal, Visual Basic, Perl, Python ou autres (désolé de ne pouvoir tous les citer), faîtes nous part de votre expérience de codeur : quel est le pire du pire que vous avez dû lire ? Une petite explication succincte pour que les non-spécialistes puissent également partager votre émois (qui je n'en doute pas est encore palpable aujourd'hui) est également la bienvenue. Quant à tous ces honteux bouts de Java reproduits ici, ils m'ont été communiqués par Baptiste Witch (responsable rubrique Java) qui se fera un plaisir de nous en livrer d'autres. Un grand merci à lui. Mais... je suis sûr que vous avez encore bien pire à raconter. Pas vrai ? Lire aussi : Les rubriques Java, Développement Web et Langages (actus, forums, tutos) de Développez.com Et pour se détendre après une journée bien chargée, la rubrique Humour Informatique
Dernière modification par ero-sennin ; 23/02/2010 à 09h25. Motif: Fautes d'orthographe |
|
|
|
|
#3 (permalink) |
|
Membre expérimenté
![]() Date d'inscription: octobre 2004
Messages: 528
|
Tout frais : en C++, sous un #ifdef _DEBUG, un if quelconque juste pour choper un point d'arrêt. Le gars s'étonne que le programme ne s'arrête pas... en Release-Debug.
__________________
http://asgeekasgot.squaregot.net/index.php/ |
|
|
|
|
|
#4 (permalink) |
|
Membre Expert
![]() Date d'inscription: mai 2004
Messages: 1 318
|
Deux petits bouts de codes qui nous ont fait bien marré devant la machine a café, en C++
Code C++ :
bool marvin = true; switch( marvin ) { case true : /* ... */; break; case false : /* ... */; break; default : /* ... */ } et le second, un parcours de liste de la STL Code :
list<class> lst;
while( i < lst.size() )
{
class tmp = lst.pop_front();
/* ... traitement ... */
lst.push_back();
i++;
}
p.s. : heu faites pas trop gaffe a la syntaxe, ca fait un moment que j ai plus fait de C++ et je me suis pas amusé a compiler ces perles
__________________
Code :
.
.
.
|
|
|
|
|
|
#5 (permalink) |
|
Membre éclairé
![]() Date d'inscription: février 2005
Localisation: sud-ouest
Âge: 35
Messages: 318
|
Dans le SDK de physX :
Code :
if(1)
{
...
Ou alors c'est tellement génial que ca me dépasse.
__________________
|
|
|
|
|
|
#6 (permalink) |
|
Candidat au titre de Membre du Club
![]() Date d'inscription: mai 2006
Localisation: Bourg-en-Bresse
Âge: 23
Messages: 22
|
Un code javascript bien crade sur un template d'une page produit d'une boutique sous magento (php).
Code javascript :
switch($('productCategory').innerHTML){ case "Store" : $('storeimg').innerHTML="<img src='<?php echo $this->getUrl(); ?>media/store/<?php echo $productId; ?>.jpg' >"; break; ... default: $('storeimg').innerHTML="<img src='<?php echo $this->getUrl(); ?>media/noproduct.jpg' >"; } Il rend en partie statique la boutique (on doit manuellement ajouter un case à chaque création de nouvelles catégories). Il dépend du nom de la catégorie : lors d'une traduction ou d'un changement par le client, tout foire. Il y a surement d'autres choses à critiquer sur ce code mais je vais en rester là ^^. |
|
|
|
|
|
#7 (permalink) |
|
Nouveau membre du Club
![]() Date d'inscription: octobre 2005
Localisation: Paris - Clichy
Âge: 29
Messages: 59
|
en java, fait par un 'expert' sur une appli que j'ai débogué il y a deux ans.
Tellement énorme que je m'en rappelle encore, ça donnait à peu près ça : Code java :
public String removeForbiddenChar(String input) { String ouput=""; String[] s = input.split(";"); for(int i=0; i<s.length;i++) { s[i].replace(";",""); output+=s[i]; } return ouput; } Dernière modification par DrHelmut ; 04/11/2009 à 03h32. |
|
|
|
|
|
#9 (permalink) |
|
Membre éclairé
![]() Date d'inscription: juin 2006
Localisation: Toulouse
Messages: 373
|
Si vous voulez vous marrez avec ce genre de chose :
http://thedailywtf.com/Series/CodeSOD.aspx C'est parfois a mourrir. Code C# :
/// <summary> /// Convertit YES ou NO en booléen /// </summary> public static string boolToYESorNO(bool mon_booleen) { if (mon_booleen) return "YES"; return "NO"; } /// <summary> /// Convertit un booléen en 1 ou 0. /// Retourne 1 si le booléen est TRUE /// Retourne 0 si le booléen est FALSE /// </summary> public static int boolTo1or0(bool mon_booleen) { if (mon_booleen) return 1; return 0; } /// <summary> /// Convertit un booléen en YES ou NO /// </summary> public static bool YESorNOToBool(string YesOrNo) { if (string.IsNullOrEmpty(YesOrNo)) return true; if (YesOrNo.ToUpper() == "YES") return true; return false; } Donc a crée ces fonctions car a une epoque ou les dev ne connaissai pas le booleen de .net(migration depuis asp), ils utilisaient 1 ou 0 et parfois "YES" ou "NO" .... |
|
|
|
|
|
#10 (permalink) | |
|
Nouveau membre du Club
![]() Date d'inscription: juillet 2007
Messages: 74
|
pour ma part, durant mon stage j'ai dû débugger une petite appli qui avait coûtée plus de 50 000 € à la société. Vu la "qualité" du code, je croit que c'est bien plus en réalité...mais chut le boss n'aime pas admettre ses conneries.
Code :
if(condition)
{
//blabla
} else {
//le même blabla que dans le if
}
Edit: Je précise juste que l'application en question est une webapp Java et que la quasi totalité du code métier était écrit dans les servlets ainsi que le code HTML. Cette précision fait suite à une remarque que j'ai reçu par MP: Citation:
Code :
if(condition); //blabla qu'on écrit qu'une fois, et par conséquent qu'on débugge qu'une fois. Dernière modification par threshold ; 20/01/2010 à 17h55. |
|
|
|
|
|
|
#11 (permalink) |
|
Invité de passage
![]() Nom : dido dido
Date d'inscription: octobre 2009
Messages: 5
|
Je dis que le code suivant (qui peut etre tester dans plusieurs langages) ne fait rien, on me dit que la reponse est superficielle
Code :
do break; while(true); do; while(false); if(true); if(false); else; for(;true; )break; while(true)break; |
|
|
|
|
|
#12 (permalink) | |
|
Membre éclairé
![]() Date d'inscription: juin 2006
Localisation: Toulouse
Messages: 373
|
Citation:
Ce qui est amusant ce sont les erreurs plus que grossière, les truc limite qui sont des correctifs de bug par dessus des correctif de bug par dessus d'autre patch, du style if(5<8). Et ça peut etre pondu par n'importe que dev, tout dépend de sa fatigue / degré d'alcoolémie / cafeine / vacance etc ... "It's not a bug , it's a feature" |
|
|
|
|
|
|
#14 (permalink) |
|
Nouveau membre du Club
![]() Date d'inscription: février 2008
Messages: 50
|
J'ai bossé avec un presta tellement nul que je sais pas trop quel bout de code choisir.
J'ai eu droit à celui-ci, plutôt pas mal : Dans une page de traitement d'un formulaire : Code :
<?php
$nom = post('nom');
$prenom = post('prenom');
[...]
Code :
<?php
function post($var) {
return $_POST['$var'];
}
J'en ai plein d'autres comme ça : - Le CMS utilisait adodb pour accéder à la BDD. Par dessus, une classe d'abstraction stockée dans un Zend_Registry, et par dessus un ensemble de fonctions style dbQuery(), dbResult() pour faire abstraction de la classe d'abstraction. L'agence est une très grosse webAgency parisienne. |
|
|
|
|
|
#15 (permalink) |
|
Membre à l'essai
![]() Date d'inscription: novembre 2008
Messages: 48
|
Comment faire une pause d'une seconde en java ?
Code :
Calendar timer = Calendar.getInstance();
timer.add(14,1000);
int i=0;
while (Calendar.getInstance().before(timer)) {
i++;
i--;
}
Je m'étais demandé l'interet du i++ suivi de i--; peut être avait il peur d'un dépassement capacité du int
|
|
|
|
|
|
![]() |
||
Le pire bout de code que vous ayez vu
|
||
| Outils de la discussion | |
|
|