2010-05-13 6 views
5

L'une des fonctions suivantes est-elle meilleure que l'autre, en termes d'emplacement de l'instruction 'return false'?PHP: Où placer la valeur 'faux'?

Fonction # 1:

function equalToTwo($a, $b) 
{ 
    $c = $a + $b; 
    if($c == 2) 
    { 
     return true; 
    } 
    return false; 
} 

Fonction # 2:

function equalToTwo($a, $b) 
{ 
    $c = $a + $b; 
    if($c == 2) 
    { 
     return true; 
    } 
    else 
    { 
     return false; 
    } 
} 

Merci!

+0

Je préfère personnellement # 1 pour sa simplicité ... mais cela est presque aussi controversé que les onglets par rapport aux espaces ou vi vs emacs. – scunliffe

+0

@scunliffe: Merci. Je suis d'accord. Je ne savais pas que c'était un sujet aussi controversé! –

Répondre

9

Il n'y a pas de différence fonctionnelle entre les deux; vous devriez choisir celui qui est le plus évident et lisible. Je voudrais habituellement utiliser un else.

Notez que votre exemple particulier devrait être écrit comme

return $c == 2; 
+2

Bon point. N'ayez pas peur d'utiliser des opérateurs de comparaison en dehors des structures de contrôle. Les booléens sont aussi des valeurs! –

+0

J'accepte votre réponse parce que vous avez répondu à la question ET fourni une alternative, qui, à mon avis, est beaucoup plus agréable! –

0

Il n'y a pas de différence entre eux. À mon avis, ils sont tous les deux également lisibles, et il n'y a pas non plus de différence notable.

2

Qu'en est-il juste:

return ($c == 2); 
2

Dans ce cas choisir celui qui est plus facile à lire pour vous, car il est une si petite fonction.

Dans les cas où la fonction est beaucoup plus grande, il est généralement préférable de faire quelque chose comme ça ...

function do($var=null) { 

    if ($var === null) { 
     return false; 
    } 

    // many lines of code 

} 

Dans ce cas, il serait question. Échouer tout de suite. Parce qu'il est beaucoup plus lisible que ...

function do($var=null) { 

    if ($var !== null) { 
     //many lines of code 
    } 
    else { 
     return false; 
    } 

} 
+0

Merci, c'est instructif. –