estilo de programación: función y procedimientos estándar de codificación
-
21-09-2019 - |
Pregunta
Ch 7.6 del código completo 2 me está confundiendo, he adjuntado un código de ejemplo (en php) importaría decirme qué estilo es el mejor? o sugerir algo mejor? gracias
Estilo 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;
}
Estilo 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;
}
Estilo 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;
}
Actualmente estoy haciendo uso de Estilo 1. Aunque no estoy muy seguro de si es la correcta.
Solución
No quiero sonar demasiado grosero, pero me gusta ninguno de los 3 estilos propuestos. Si soy la comprobación de las condiciones que impidan la ejecución de una función, siempre me quedo con este estilo. En general:
function action()
{
if ($guard_condition1)
return $failure;
if ($guard_condition2)
return $failure;
do_action();
return $success;
}
Así que me gustaría volver a escribir el código de la siguiente manera:
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);
}
En cualquier caso, si necesita una opinión sobre lo que usted propuso, yo votaría por el estilo 3.
Otros consejos
En el estilo 1 "si" y "else if" se utiliza en diferentes condiciones, por lo que no tiene sentido.
En estilo 2 líneas:
$this->twitter->login($user, $pass);
if($this->twitter->isLoggedIn())
son demasiado difíciles de leer en algunas situaciones, pero es un adecuado.
Para mí el mejor es el estilo 3.