問個PHP代碼規範的問題

來源:互聯網
上載者:User
首先,有個函數是這麼寫的。

function  exam(){    //從資料庫擷取資料。    $records = $aModel->where(['type' => 1])->get();        if(empty($records))  return false;        $newRecord = $bModel->map();    foreach($records as $item){        $newRecord->name = $item->name;        $newRecord->age = $item->age;        try{            $bModel->insert($newRecord);        }        catch(\Exception $e){            \Log::catch($e);        }    }    return true;}

然後,這個函數是這麼調用的。

if(true !== exam()){    echo "表更新失敗";    return false;}

請各位經驗豐富的phper看下,這其中有幾個地方看著挺彆扭的:

  1. 函數exam()中,return 的位置是否合適。

  2. 假如遇到函數中傳回型別不確定,執行完成返回結果,執行失敗返回false這種情況下,調用的時候是否適合對結果進行類似 if(false === exam()) 的判斷。

  3. 感覺在if判斷中執行函數,會使得代碼的可讀性降低,不知是否存在這樣的問題。

回複內容:

首先,有個函數是這麼寫的。

function  exam(){    //從資料庫擷取資料。    $records = $aModel->where(['type' => 1])->get();        if(empty($records))  return false;        $newRecord = $bModel->map();    foreach($records as $item){        $newRecord->name = $item->name;        $newRecord->age = $item->age;        try{            $bModel->insert($newRecord);        }        catch(\Exception $e){            \Log::catch($e);        }    }    return true;}

然後,這個函數是這麼調用的。

if(true !== exam()){    echo "表更新失敗";    return false;}

請各位經驗豐富的phper看下,這其中有幾個地方看著挺彆扭的:

  1. 函數exam()中,return 的位置是否合適。

  2. 假如遇到函數中傳回型別不確定,執行完成返回結果,執行失敗返回false這種情況下,調用的時候是否適合對結果進行類似 if(false === exam()) 的判斷。

  3. 感覺在if判斷中執行函數,會使得代碼的可讀性降低,不知是否存在這樣的問題。

  1. exam()中的return 為什麼不在拋出異常的時候就直接return false?

  2. 一般傳回型別如果是bool類型不建議加第三種類型,你說的那種方法可以判斷但是不建議

  3. 可讀性的問題不是因為在if裡,而是你的函數名有問題,如果要返回是bool型建議加個is來表示, 如:

if(false === isExam()){    echo "表更新失敗";    return false;}

推薦一本書你可以看看:
https://book.douban.com/subje...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.