Plusieurs "returns"

Eléphanteau du PHP | 22 Messages

27 juil. 2005, 06:09

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" !
"Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius -- and a lot of courage -- to move in the opposite direction."

Eléphant du PHP | 100 Messages

27 juil. 2005, 06:37

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;
}

Eléphanteau du PHP | 22 Messages

27 juil. 2005, 07:01

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...
"Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius -- and a lot of courage -- to move in the opposite direction."

ViPHP
ViPHP | 1024 Messages

27 juil. 2005, 07:32

merci de lire les reglements et de consulter les catégories, ce forum n'est pas fait pour les questions.

A+

Pascal

Mammouth du PHP | 19672 Messages

27 juil. 2005, 09:53

Modération : Stukov, comme mentionné par pascaltje, tu es vivement encouragé à lire les règles du forum.
Sujet déplacé !
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

27 juil. 2005, 09:54

OWNED !
par Cyrano :)
Modifié en dernier par mere-teresa le 28 juil. 2005, 09:38, modifié 1 fois.

Eléphant du PHP | 63 Messages

27 juil. 2005, 16:07

Surtout que moi, pour testa, j'aurais fait:
function testa($var)
{
    if($var < 1) return "plus petit";
    
   return "plus grand";
}

Eléphanteau du PHP | 22 Messages

28 juil. 2005, 04:35

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.
"Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius -- and a lot of courage -- to move in the opposite direction."

Mammouth du PHP | 19672 Messages

28 juil. 2005, 07:46

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 ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

28 juil. 2005, 09:40

Justement, grâce à ta générosité sans limite et à tes multiples autres qualités... (hum, hum.)
[-( Comment ça hum hum ?

Eléphanteau du PHP | 22 Messages

28 juil. 2005, 16:38

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.
"Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius -- and a lot of courage -- to move in the opposite direction."