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.

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top