style de codage: fonction et les procédures standard de codage
-
21-09-2019 - |
Question
Ch 7.6 du Code complet 2 me source de confusion, j'ai joint quelques exemples de code (en php) l'esprit de me dire quel style est le meilleur? ou suggérer quelque chose de mieux? merci
Style 1
public function register($user, $pass) {
if($this->model->isRegistered($user)
{
return false;
}
else if($this->twitter->login($user, $pass))
{
return $this->model->addUser($user, $pass);
}
return false;
}
Style 2
public function register($user, $pass) {
if($this->model->isRegistered($user)
{
return false;
}
$this->twitter->login($user, $pass);
if($this->twitter->isLoggedIn())
{
return $this-model->addUser($user, $pass);
}
return false;
}
Style 3
public function register($user, $pass) {
if($this->model->isRegistered($user)
{
return false;
}
$status = $this->twitter->login($user, $pass);
if($status)
{
return $this->model->addUser($user, $pass);
}
return false;
}
Je fais actuellement l'utilisation du style 1. Bien que je ne suis pas tout à fait sûr si son une droite.
La solution
Je ne veux pas paraître trop rude mais j'aime Noone des 3 modèles proposés. Si je suis la vérification des conditions empêchant l'exécution d'une fonction, je vais toujours coller avec ce style. En général:
function action()
{
if ($guard_condition1)
return $failure;
if ($guard_condition2)
return $failure;
do_action();
return $success;
}
Alors je réécris votre code comme suit:
public function register($user, $pass)
{
if ($this->model->isRegistered($user))
return false;
if (!$this->twitter->login($user, $pass))
return false;
return $this->model->addUser($user, $pass);
}
Quoi qu'il en soit, si vous avez besoin d'un avis sur ce que vous proposez, je voterais pour le style 3.
Autres conseils
Dans Style 1 "si" et "else if" est utilisé sur des conditions différentes, de sorte qu'il n'a pas de sens.
Dans le style 2 lignes:
$this->twitter->login($user, $pass);
if($this->twitter->isLoggedIn())
sont trop difficiles à lire dans certaines situations, mais il est un bon.
Pour moi, le meilleur est de style 3.