OVH Cloud OVH Cloud

Optimisation code

24 réponses
Avatar
Michel
Bonjour,

Voici ce code simple :
if($etat==1){$f="a"; $l="a";}
if($etat==2){$f="b"; $l="a";}
if($etat==3){$f="c"; $l="a";}
if($etat==4){$f="a"; $l="b";}
if($etat==5){$f="a"; $l="c";}

Cela me semble peut élégant, est-il possible de l'optimiser ?

Merci de votre aide à un débutant éclairé.

Michel

4 réponses

1 2 3
Avatar
Laurent Seguin
John Gallet , le 02 déc. 2004 09:24:50, écrivait
ceci:

Ecrivez du code DETERMINISTE, nom d'un chat !


C'est qu'il mordrait presque !

--
On bouffe quand ?

Avatar
DJiK
Ecrivez du code DETERMINISTE, nom d'un chat !



Ben... Si ce qu'il y a avant ne donne aucune chance d'arriver dans default:, ça n'a pas une grande importance. Et c'est bien déterministe.

Evidemment si c'est une valeur entrée par l'utilisateur, c'est différent! :D


Ça revient au m^ avec la méthode du tableau (que je trouve jolie, bravo! ;-)) on ne vérifie pas si on demande le 5e élément d'un tableau de 4. ;-)

--
DJiK

Avatar
marc.quinton-PAS-DE-
John Gallet wrote:

Ecrivez du code DETERMINISTE, nom d'un chat !



pour info, les fonctions avec valeur par défaut faisant partie intégrante
du langage php depuis un bon moment utilisent le meme principe ; ex


function check_admin($user, $group='user'){
if($user == '...')
}


est-ce que cette fonction est plus ou moins déterministe que le switch
avec un défault ?


de meme un code utilisant un switch, pourquoi le qualifies-tu d'indeterministe,
pour ma part je dirais plutot que sans le default, le code ne rendra pas de
reponse correcte puis que non prévue, et par-la meme sera plus indéterministe.

l'idéal en fait est de lever une exception dans le cas ou un défault génere
une erreur non gérable localement. A defaut on retourne ou boolean false,
ou un objet de la classe Error, facon Pear.

tiens, un exemple avec le calcul de factoriel en récurcivité :

function fact($n=1){
switch($n){
case 1:
return 1;
break;

default:
return $n * fact($n-1);
break;
}
}

sauf erreur dans le code, il n'est pas si indéterministe que tu peux le
laisser entendre mon petit bout de code. Bon c'est vrai qu'ici, ca peut
se resumer a un simple if. Mais imaginons une opération un peu plus complexe
il il faille tester 0, 1, 2 et tous le reste une réponse commune, je ne
vois pas pourquoi dans ces conditions je me priverais du default de
l'instruction switch.

Avatar
nospam
wrote:

function fact($n=1){
switch($n){
case 1:
return 1;
break;

default:
return $n * fact($n-1);
break;
}
}

sauf erreur dans le code, il n'est pas si indéterministe que tu peux le
laisser entendre mon petit bout de code. Bon c'est vrai qu'ici, ca peut
se resumer a un simple if. Mais imaginons une opération un peu plus complexe
il il faille tester 0, 1, 2 et tous le reste une réponse commune, je ne
vois pas pourquoi dans ces conditions je me priverais du default de
l'instruction switch.


Dans ce cas tu auras un problème si la fonction est appellée
avec $n = -1 par exemple

--
Romuald Brunet, ICQ 33033393, http://mog.online.fr

Remplacez nospam par mon prénom pour me contacter par email

1 2 3