编码风格:功能和程序编码标准

时间:2009-10-14 08:13:32

标签: php coding-style code-complete

代码完成2的第7.6章让我感到困惑,我附上了一些示例代码(在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;
}

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.虽然我不确定它是否是正确的。

2 个答案:

答案 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。