Page 1 sur 1
Plusieurs "returns"
Posté : 27 juil. 2005, 06:09
par stukov
Depuis toujours, on m'a indiqué à programmer de façon à ce qu'il n'y ait toujours qu'un seul "return" par fonction. Toutefois, j'ai vu plusieurs scripts qui possède plusieurs "returns". Est-ce que l'emploi de telles méthodes est vraiment mauvaise?
Vos opinions?
Modération de mere-teresa : Je suis vraiment trop sympa moi, je vais même pas supprimer ton post. Pourquoi ?
Je me dis que cette question peut servir à d'autres...
Allez, direction le forum "Débuter en PHP" !
Posté : 27 juil. 2005, 06:37
par stevelace
Bonjour, tout dépends de la syntaxe utilisée, voici 2 fonctions écrites différemment mais qui donnent exactement le même résultat.
//Version a
function testa($var)
{
if($var < 1)
{
return "plus petit";
}
else
{
return "plus grand";
}
}
//Version b
function testb($var)
{
if($var < 1)
{
$res = "plus petit";
}
else
{
$res = "plus grand";
}
return $res;
}
Posté : 27 juil. 2005, 07:01
par stukov
Mais à un niveau extrêmement poussé, n'est-il pas préférable d'utiliser la seconde option (version b)?
Peut-être n'y a-il pas de différence réellement, mais on m'a toujours enseigné à utiliser la version B parce que la A était "lâche". Bah, je ne sais plus trop quoi croire...
Posté : 27 juil. 2005, 07:32
par pascaltje
merci de lire les reglements et de consulter les catégories, ce forum n'est pas fait pour les questions.
A+
Pascal
Posté : 27 juil. 2005, 09:53
par Cyrano
Modération : Stukov, comme mentionné par pascaltje, tu es vivement encouragé à lire les règles du forum.
Sujet déplacé !
Posté : 27 juil. 2005, 09:54
par mere-teresa
OWNED !
par Cyrano

Posté : 27 juil. 2005, 16:07
par Jawad
Surtout que moi, pour testa, j'aurais fait:
function testa($var)
{
if($var < 1) return "plus petit";
return "plus grand";
}
Posté : 28 juil. 2005, 04:35
par stukov
Modération de mere-teresa : Je suis vraiment trop sympa moi, je vais même pas supprimer ton post. Pourquoi ?
Je me dis que cette question peut servir à d'autres...
Justement, grâce à ta générosité sans limite et à tes multiples autres qualités... (hum, hum.), ce post pourra servir aux autres. Maintenant, trève de plaisanteries.
À ceux qui se posaient la même question, voici un article qui a été apporté à mon attention récemment qui traite sur le sujet:
http://en.wikipedia.org/wiki/Structured_programming - en anglais (credits: timvw).
Conclusion rapide pour ceux qui sont trop lâches pour lire (j'en connais plusieurs

):
C'est un moyen "faible" de programmer, mais si cela peut aider à augmenter la lisibilité du script (ex.: sauver une dizaine de "if" imbriqués), il est convenable de faire usage de cette technique.
Posté : 28 juil. 2005, 07:46
par Cyrano
Dans la pratique, ça dépend de chacun : personnellement, je m'arrange pour n'avoir qu'un seul "return dans mes fonctions. Ce qui m'importe, c'est que selonle résultat des instructions exécutées, la valeur retournée peut varier. Donc ce que je vais habituellement faire, c'est initialiser une valeur par défaut à une variable. Au fil des alternatives ou des boucles ou de tout évènement particulier, je vais modifier cette valeur et à la fin de ma fonction, je vais retourner va variable. Shématiquement:
<?php
function mafonction()
{
if(condition = "a")
{
executer("a");
$resultat = "quelque chose";
}
elseif(condition = "b")
{
autre_fonction("b");
$resultat = "autrechose";
}
else
{
$resultat = "rien";
}
return $resultat;
}
?>
De cette manière, je ne mets qu'un seul "return". Mais il aurait été tout aussi valable de faire autrement, ça exécuterait strictement la même chose en faisant:
<?php
function mafonction()
{
if(condition = "a")
{
executer("a");
return "quelque chose";
}
elseif(condition = "b")
{
autre_fonction("b");
return "autrechose";
}
else
{
return "rien";
}
}
?>
Est-ce que ça correspond à ta question ?
Posté : 28 juil. 2005, 09:40
par mere-teresa
Justement, grâce à ta générosité sans limite et à tes multiples autres qualités... (hum, hum.)
[-( Comment ça hum hum ?
Posté : 28 juil. 2005, 16:38
par stukov
Cyrano: Merci pour l'explication mais je connais exactement l'emploi des deux méthodes. Je me questionne plutôt à savoir si l'une ou l'autre est meilleure ou "plus reconnue".
En fait, je crois de plus en plus comprendre qu'il n'y a pas de différence significative - du moins nous le saurons lorsque j'aurai terminé mes "benchmarks", mais que c'est en effet, comme tu le dis, une préférence de programmation.