簡體   English   中英

哪個代碼更有效?

[英]Which code is more effective?

我想知道哪個代碼更有效,意味着更快更可靠。 當我的客戶端將數據發布到我的網站時,我不允許他們使用除字母數字字符之外的任何其他內容,因為不需要其他人。 我的問題是,一個例外會更快,更可靠嗎? 或者我應該遠離這個目的的例外? 這是我的代碼。

正常方式 -

function checkStr ($str)
{
  if (preg_match('/[^0-9a-zA-Z]/', $str) > 0))
  {
     return false;
  }
  else
  {
     return true;
  }
}
if (checkStr($_POST['field']) == true)
{
  //continue
}
else
{
  echo "Invalid characters";
}

例外 -

function checkStr ($str)
{
    if (preg_match('/[^0-9a-zA-Z]/', $str) > 0)
    {
        throw new Exception('Invalid characters');
    }
    return true;
}

    try
    {
        checkStr($_POST['field']);

        //no exception, continue with code 
    }

    catch (Exception $e)
    {
      echo $e->getMessage();

    }
}

雖然例外會有一些性能開銷,但性能不是唯一的標准。 還要考慮代碼大小和復雜性以及整體可維護性。

我經常遇到代碼,其中不檢查方法的返回值,因此忽略錯誤。

哪個代碼更容易理解

 if ( do this ) 
     if (do that)
        if (something else)
            OK
        else
            bad something
      else
         bad that
 else
      bad this

或者有例外

 try
     do this
     do that
     something else
 catch
     report error

我不是一個php程序員,但在Java中我傾向於使用異常很多。

與正常的程序流控制功能相比,異常會產生更多的開銷(if,else,elseif等),因此從這個角度來看,第一個選項更快。 例外是棘手的事情,因為它們是PHP的一個相對較新的補充,人們傾向於過度使用它們。 通常,當代碼中出現的情況異常時,我會嘗試僅拋出異常。

例如,如果我有一個函數,其中有效輸入是整數1-100,那么我輸入40時返回true,輸入493時返回false,並為“kumquat”的輸入拋出異常”。

順便說一句,您可以在一行中編寫函數的第一個版本:

function checkStr ($str)
{
    return (preg_match('/[^0-9a-zA-Z]/', $str) > 0));
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM