Domanda

Ch 7.6 del codice completo 2 me è fonte di confusione, ho allegato alcuni esempi di codice (in php) dispiacerebbe dirmi quale stile è il migliore? o suggerire qualcosa di meglio? grazie

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

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

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

Al momento sto facendo uso di Style 1. Anche se io non sono molto sicuro se quella giusta.

È stato utile?

Soluzione

Non voglio sembrare troppo scortese, ma mi piace nessuno dei 3 stili proposti. Se sto controllando per condizioni che impediscono l'esecuzione di una funzione, io sarò sempre bastone con questo stile. In generale:

function action()
{
    if ($guard_condition1)
        return $failure;

    if ($guard_condition2)
        return $failure;

    do_action();
    return $success;
}

Così mi piacerebbe riscrivere il codice come segue:

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

In ogni caso, se avete bisogno di un parere su quello che avete proposto, avrei votato per lo stile 3.

Altri suggerimenti

In Style 1 "se" e "else if" viene utilizzato su condizioni diverse, in modo che non ha senso.

In Stile 2 linee:

 $this->twitter->login($user, $pass);
 if($this->twitter->isLoggedIn())

sono troppo difficile da leggere in alcune situazioni, ma è una vera e propria.

Per me il migliore è di stile 3.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top