代码的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“if”和“如果其他”用于不同的条件,所以没有什么意义。

在样式2行:

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

有太多难以在某些情况下阅读,但它是正确的。

有关我最好的一个是式3。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top