繁体   English   中英

编码方式:功能和程序编码标准

[英]Coding style: function and procedures coding standard

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

风格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”和“ else if”在不同的条件下使用,因此没有意义。

在样式2行中:

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

在某些情况下很难阅读,但这是适当的。

对我来说,最好的是Style 3。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM