簡體   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