Que faire lorsque le programmeur qui vous a précédé ne sait pas ce qu'est une itération ?
Le cas de Don R
Le 2009-12-09 10:19:59, par Katleen Erna, Expert éminent sénior
Que faire lorsque le programmeur qui vous a précédé ne sait pas ce qu'est une itération ? Le cas de Don R
Don R est un programmeur normal, avec un travail normal, dans une compagnie normale. D'ailleurs, ce matin, c'est son premier jour dans la nouvelle boîte qui vient de le recruter. Confiant, il s'installe à son poste alors que son supérieur vient le voir, pour lui annoncer que le premier cas qu'il aura à traiter sera "facile".
"Ca sera fait en un rien de temps !", assure-t-il, jovial, à la nouvelle recrue. "C'est un soucis qui arrive régulièrement, et je l'ai déjà arrangé plusieurs fois. Des fois, il y a des descriptions avec trop d'espaces, et quand on envoie un datafeed à la compagnie concernée, ça risque de dérègler leurs systèmes. Mais je suis sûr que tu sauras t'en tirer, c'est un cas de routine pour nous.", termine son patron, lui tappant sur l'épaule.
L'homme avait raison, le cas était plutôt facile à résoudre...
Jetez un oeil au code en question :
Se demandant pourquoi 24 replacements avaient été utilisés, Don regarda la version précédente...
Puis, la version antérieure à la version précédente...
Une sorte de "suite logique" semblait se faire voir, aussi, il remonta encore d'une version....
Puis une autre...
Finalement, il atteint la version de départ...
Bien qu'il fut tenté de rajouter un ligne similaire à celles ajoutées par son patron, Don décida de tout remplacer par ceci :
L'histoire ne dit pas s'il fut félicité ou remercié pour ce geste.
Avez-vous déjà vécu des situations similaires ?
Don R est un programmeur normal, avec un travail normal, dans une compagnie normale. D'ailleurs, ce matin, c'est son premier jour dans la nouvelle boîte qui vient de le recruter. Confiant, il s'installe à son poste alors que son supérieur vient le voir, pour lui annoncer que le premier cas qu'il aura à traiter sera "facile".
"Ca sera fait en un rien de temps !", assure-t-il, jovial, à la nouvelle recrue. "C'est un soucis qui arrive régulièrement, et je l'ai déjà arrangé plusieurs fois. Des fois, il y a des descriptions avec trop d'espaces, et quand on envoie un datafeed à la compagnie concernée, ça risque de dérègler leurs systèmes. Mais je suis sûr que tu sauras t'en tirer, c'est un cas de routine pour nous.", termine son patron, lui tappant sur l'épaule.
L'homme avait raison, le cas était plutôt facile à résoudre...
Jetez un oeil au code en question :
Code : |
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 | // pull double spaces itemDesc = stringReplace(stringReplace( stringReplace(stringReplace( stringReplace(stringReplace( stringReplace(stringReplace( stringReplace(stringReplace( stringReplace(stringReplace( stringReplace(stringReplace( stringReplace(stringReplace( stringReplace(stringReplace( stringReplace(stringReplace( stringReplace(stringReplace( stringReplace(stringReplace( itemDesc, " ", " ")," ", " "), " ", " ")," ", " "), " ", " ")," ", " "), " ", " ")," ", " "), " ", " ")," ", " "), " ", " ")," ", " "), " ", " ")," ", " "), " ", " ")," ", " "), " ", " ")," ", " "), " ", " ")," ", " "), " ", " ")," ", " "), " ", " ")," ", " "); |
Se demandant pourquoi 24 replacements avaient été utilisés, Don regarda la version précédente...
Code : |
1 2 3 4 5 6 7 8 9 10 11 | // pull double spaces itemDesc = stringReplace(stringReplace( stringReplace(stringReplace( stringReplace(stringReplace( stringReplace(stringReplace( itemDesc, " ", " ")," ", " "), " ", " ")," ", " "), " ", " ")," ", " "), " ", " ")," ", " "); |
Puis, la version antérieure à la version précédente...
Code : |
1 2 3 4 5 6 7 8 9 10 11 | // pull double spaces itemDesc = stringReplace( stringReplace( stringReplace( stringReplace( itemDesc, " ", " "), " ", " "), " ", " "), " ", " "); |
Une sorte de "suite logique" semblait se faire voir, aussi, il remonta encore d'une version....
Code : |
1 2 3 4 5 | // pull double spaces itemDesc = stringReplace(stringReplace( stringReplace(itemDesc, " ", " "), " ", " "), " ", " "); |
Puis une autre...
Code : |
1 2 3 4 | // pull double spaces itemDesc = stringReplace( stringReplace(itemDesc, " ", " "), " ", " "); |
Finalement, il atteint la version de départ...
Code : |
1 2 | // pull double spaces itemDesc = stringReplace(itemDesc, " ", " "); |
Code : |
1 2 | // pull double spaces regexReplace(itemDesc, "[ ][ ]+", " "); |
-
michel.bosseauxMembre confirméCa fait peur... mais j'ai connu des cas aussi hallucinants moi même donc je sais que ça existe. Malheureusement.le 09/12/2009 à 10:40
-
RykianFutur Membre du ClubTiens, un article qui aurait pu terminer sur DailyWTFle 09/12/2009 à 10:42
-
Il y était déjà :
http://thedailywtf.com/Articles/A-Sp...y-Problem.aspx
SVP indiquez vos sources, les 3/4 (a vu de nez, je dirai plus) des articles news ne sont que des traductions , sans indiquer la source. OK vous n'êtes pas journaliste et vous voulez partager l'info (et c'est très bien), mais donnez vos sources.le 09/12/2009 à 10:59 -
FloMoMembre expérimentéJ'ai connu ça dans une très grosse société... (paramètres de fonctions remplacés par n versions de la fonction aussi) Le code avait de l'âge, ça peut excuser.le 09/12/2009 à 11:03
-
martopiocheMembre éclairé-_- je suis en plein dedans sur en effet une trèès vielle appli -_-le 09/12/2009 à 11:37
-
nicolofontana12InscritJ'ai aussi rencontrer ce cas un jour
Au lieu d'utiliser switch() il utilisait une suite de if else , if else i...... imbriquée !le 09/12/2009 à 12:54 -
FloMoMembre expérimentéA la limite, le 'if else' imbriqué ne fait pas plus de code et est plus performant, donc ça peut se justifier...le 09/12/2009 à 12:57
-
Jonas0122Nouveau membre du ClubCa je trouve que plutôt facile et pas trop choquant, switch() ce n'est pas ce qui est tjrs le plus utile (même si ca l'ai beaucoup on est d'accord),
moi j'ai connu des lignes de codes imbriquées de cette façon:Code : 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21protected function request($method, $url , $vars = array()) { $this->handle = curl_init(); switch ($method) { case 'GET': curl_setopt($this->handle, CURLOPT_HTTPGET, true); break; case 'POST': curl_setopt($this->handle, CURLOPT_POST, true); break ; default: curl_setopt($this->handle, CURLOPT_CUSTOMREQUEST, $method); }
tres bon article en tout cas!le 09/12/2009 à 15:17 -
pmithrandirExpert éminentJuste pour savoir, c'est sencé faire quoi ce code... parce que bon, je suis aps familier de cette fonction et je ne comprend ni le code de la fin, ni le string replace... Bon , je suis peut etre pas bien reveillé, mais bon...
ca remplace dans itemDesc un espace par un espace ?le 09/12/2009 à 15:31 -
Fallen_LeafNouveau membre du Cluble 09/12/2009 à 15:39