質問

完全なコードのChの7.6 2が私を混乱され、私は最適なスタイルを私に言っていくつかのサンプルコード(PHPで)心を添付しましたか?またはより良い何かを示唆?感謝

スタイル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;
}

スタイル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;
}

スタイル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;
}

私はかなり確実にその右のいずれかのじゃないけど、私は現在のスタイル1を利用しています。

役に立ちましたか?

解決

私はあまりにも失礼けど3つの提案スタイルの誰ものような音にしたくありません。私は、関数の実行を防止する条件をチェックしていた場合、私はいつもこのスタイルに固執ます。一般的には:

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

    if ($guard_condition2)
        return $failure;

    do_action();
    return $success;
}

私は次のようにコードを書き換えたいだからます:

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);
}
あなたが提案したものについての意見を必要とする場合は、

とにかく、私はスタイル3に投票したい。

他のヒント

でスタイル1「の場合」と「それ以外の場合は、」それは意味がないので、さまざまな条件で使用されます。

でスタイル2行:

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

は、いくつかの状況では読みにくいすぎですが、それは正しいのです。

私にとって最高の1スタイル3です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top