风格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;
}
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;
}
我目前正在使用Style 1.虽然我不确定它是否是正确的。
答案 0 :(得分:3)
我不想听起来太粗鲁,但我不喜欢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)
在样式1中,“if”和“else if”用于不同的条件,因此没有意义。
在样式2行中:
$this->twitter->login($user, $pass);
if($this->twitter->isLoggedIn())
在某些情况下难以阅读,但这是正确的。
对我而言,最好的是Style 3。