Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

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 , par Katleen Erna

0PARTAGES

1  0 
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 :

Code : Sélectionner tout
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 : Sélectionner tout
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 : Sélectionner tout
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 : Sélectionner tout
1
2
3
4
5
// pull double spaces
itemDesc = stringReplace(stringReplace(
    stringReplace(itemDesc, "  ", " "),
    "  ", " "),
    "  ", " ");

Puis une autre...

Code : Sélectionner tout
1
2
3
4
// pull double spaces
itemDesc = stringReplace(
    stringReplace(itemDesc, "  ", " "),
    "  ", " ");

Finalement, il atteint la version de départ...

Code : Sélectionner tout
1
2
// pull double spaces
itemDesc = stringReplace(itemDesc, "  ", " ");
Bien qu'il fut tenté de rajouter un ligne similaire à celles ajoutées par son patron, Don décida de tout remplacer par ceci :

Code : Sélectionner tout
1
2
// pull double spaces
regexReplace(itemDesc, "[ ][ ]+", " ");
L'histoire ne dit pas s'il fut félicité ou remercié pour ce geste.

Avez-vous déjà vécu des situations similaires ?

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de michel.bosseaux
Membre confirmé https://www.developpez.com
Le 09/12/2009 à 10:40
Ca fait peur... mais j'ai connu des cas aussi hallucinants moi même donc je sais que ça existe. Malheureusement.
1  0 
Avatar de Rykian
Futur Membre du Club https://www.developpez.com
Le 09/12/2009 à 10:42
Tiens, un article qui aurait pu terminer sur DailyWTF
1  0 
Avatar de
https://www.developpez.com
Le 09/12/2009 à 10:59
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.
1  0 
Avatar de FloMo
Membre expérimenté https://www.developpez.com
Le 09/12/2009 à 11:03
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.
1  0 
Avatar de martopioche
Membre éclairé https://www.developpez.com
Le 09/12/2009 à 11:37
-_- je suis en plein dedans sur en effet une trèès vielle appli -_-
1  0 
Avatar de nicolofontana12
Inscrit https://www.developpez.com
Le 09/12/2009 à 12:54
J'ai aussi rencontrer ce cas un jour

Au lieu d'utiliser switch() il utilisait une suite de if else , if else i...... imbriquée !
1  0 
Avatar de FloMo
Membre expérimenté https://www.developpez.com
Le 09/12/2009 à 12:57
Citation Envoyé par jahbromo Voir le message
J'ai aussi rencontrer ce cas un jour

Au lieu d'utiliser switch() il utilisait une suite de if else , if else i...... imbriquée !
A la limite, le 'if else' imbriqué ne fait pas plus de code et est plus performant, donc ça peut se justifier...
1  0 
Avatar de Jonas0122
Membre à l'essai https://www.developpez.com
Le 09/12/2009 à 15:17
Citation Envoyé par jahbromo Voir le message
J'ai aussi rencontrer ce cas un jour

Au lieu d'utiliser switch() il utilisait une suite de if else , if else i...... imbriquée !
Ca 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 : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
  protected 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);
       }
Et ca venait pas d'un problème d'éditeur, c'est pas pareil que raconté dans l'article mais bon je tenais à le dire

tres bon article en tout cas!
1  0 
Avatar de pmithrandir
Expert confirmé https://www.developpez.com
Le 09/12/2009 à 15:31
Citation Envoyé par Katleen Erna Voir le message

Code : Sélectionner tout
1
2
// pull double spaces
itemDesc = stringReplace(itemDesc, "  ", " ");
Juste 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 ?
1  0 
Avatar de Fallen_Leaf
Nouveau membre du Club https://www.developpez.com
Le 09/12/2009 à 15:39
Citation Envoyé par pmithrandir Voir le message
Juste 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 ?
Un double espace par un seul espace
1  0