我有一個關於else條件的衝突。我可以用兩種方式編寫程序。其他語句的用法
方法1
$msg = ''; if(cond) { $msg = 'success'; } else { $msg = 'error'; }
方法2
$msg = 'error'; if(cond) { $msg = 'success'; }
能否請你告訴我哪一種方法更好,怎麼樣?由於
我有一個關於else條件的衝突。我可以用兩種方式編寫程序。其他語句的用法
方法1
$msg = '';
if(cond)
{
$msg = 'success';
}
else
{
$msg = 'error';
}
方法2
$msg = 'error';
if(cond)
{
$msg = 'success';
}
能否請你告訴我哪一種方法更好,怎麼樣?由於
在這兩者之間,我會選擇第一個。
$msg = '';
if(cond) {
$msg = 'success';
} else {
$msg = 'error';
}
這是可讀的,並清楚地表達了它試圖做的事情。 如果條件成立,則消息將是success
。如果不是,則消息將是error
。
但是對於上面的一些非常簡單的東西,我會使用三元語句代替。這是非常有用的,可以減少代碼,但可能會使您的代碼在某些情況下無法讀取:
$msg = (cond) ? "success" : "error";
很酷,對不對?在這裏閱讀更多關於ternary operators。
$msg = (cond) ? 'success' : 'error';
我想說第二個更好,因爲它是少線,它有一個默認行爲。無論如何,即使您在路上添加其他檢查,您也知道$ msg將包含某些內容。不過,我想使用三元運算在這種情況下:
$msg = (cond) ? 'success' : 'error';
代碼的可讀性問題,所以我會用三元運算符當它真正簡化了的樣子。 考慮這一點,
function foo($stuff) {
$var = null;
if ($stuff === true) {
$var = true;
} else {
$var = false;
}
return $var !== null ? true : false;
}
因爲在這種情況下,return $var !== null ? true : false
很短,它可以被視爲「容易閱讀和理解」。
考慮這一點,
function foo($stuff) {
$var = null;
if ($stuff === true) {
$var = true;
} else {
$var = false;
}
if ($var !== null) {
return true;
} else {
return false;
}
}
同樣的事,但一點點長
結論
if/else
堅持你也應該把這個事情「辦法」,而不是「法」,因爲一個方法是一個類中的一個函數。
'$ msg =(cond)? '成功':'錯誤';'? – Nobody
第二個比較好,當然。線條少,行爲相同,不會產生影響。 – DontVoteMeDown
在這種情況下,它看起來沒有什麼區別,但作爲一個經驗法則,我喜歡將變量設置爲「更安全」或更可能的條件,所以如果它變成一長串檢查並且我錯過了某些東西,或意外發生的事情,它至少有一個默認值。 – Mike