stile di codifica: la funzione e le procedure standard di codifica
-
21-09-2019 - |
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.
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.