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.

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top