問個PHP程式碼規範的問題

WBOY
發布: 2016-10-11 14:23:38
原創
1123 人瀏覽過

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

<code>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;
}
</code>
登入後複製
登入後複製

然後,這個函數是這麼呼叫的。

<code>if(true !== exam()){
    echo "表更新失败";
    return false;
}</code>
登入後複製
登入後複製

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

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

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

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

回覆內容:

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

<code>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;
}
</code>
登入後複製
登入後複製

然後,這個函數是這麼呼叫的。

<code>if(true !== exam()){
    echo "表更新失败";
    return false;
}</code>
登入後複製
登入後複製

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

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

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

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

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

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

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

<code class="php">if(false === isExam()){
    echo "表更新失败";
    return false;
}</code>
登入後複製

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

相關標籤:
php
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板