[英]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.