Plusieurs "returns"

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Plusieurs "returns"

par stukov » 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.

par mere-teresa » 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 ?

par Cyrano » 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 ?

par stukov » 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.

par Jawad » 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";
}

par mere-teresa » 27 juil. 2005, 09:54

OWNED !
par Cyrano :)

par Cyrano » 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é !

par pascaltje » 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

par stukov » 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...

par stevelace » 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;
}

Plusieurs "returns"

par stukov » 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" !