Frage

Ch 7.6 von Code Complete 2 ist verwirrend mich, habe ich einige Beispiel-Code angehängt (in PHP) Geist mir zu sagen, welche Art ist die beste? oder etwas besser vorschlagen? Dank

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

Ich mache zur Zeit Verwendung von Stil 1. Obwohl ich bin mir nicht ganz sicher, ob es das richtige ist.

War es hilfreich?

Lösung

Ich will nicht zu unhöflich klingen, aber ich mag keiner der drei vorgeschlagenen Arten. Wenn ich für Bedingungen bin Überprüfung der Ausführung einer Funktion zu verhindern, werde ich immer mit dieser Art bleiben. Allgemein gilt:

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

    if ($guard_condition2)
        return $failure;

    do_action();
    return $success;
}

Also ich Ihren Code wie folgt neu schreiben würde:

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

Wie auch immer, wenn Sie eine Meinung zu müssen, was Sie vorgeschlagen, die ich für Stil 3 stimmen würde.

Andere Tipps

In Style 1 "wenn" und "else if" auf unterschiedliche Bedingungen verwendet wird, so dass es keinen Sinn macht.

In Style 2 Zeilen:

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

sind zu viel hart in einigen Situationen zu lesen, aber es ist ein richtiger.

Für mich ist die beste ist Style 3.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top