我早就IF:如何寫更長的IF更漂亮?
if(rand(1, 100) == 22 && $smth < time() &&
$smths > 5 && $sxsxsx > 250 &&
!$_SESSION['false'])
{
echo "wow, big if just happened!";
}
怎麼寫更 「漂亮」?
我早就IF:如何寫更長的IF更漂亮?
if(rand(1, 100) == 22 && $smth < time() &&
$smths > 5 && $sxsxsx > 250 &&
!$_SESSION['false'])
{
echo "wow, big if just happened!";
}
怎麼寫更 「漂亮」?
按照我的回答對相關
這應該用重構,這意味着你應該將單獨的測試分成不同的功能。你應該擺脫魔術數字和無意義的變量名稱。我會給你一個關於如何爲你的代碼做這個事情的例子,但是代碼是不可理解的。
我更喜歡在布爾運算符之前打破。
if(rand(1, 100) == 22
&& $smth < time()
&& $smths > 5
&& $sxsxsx > 250
&& !$_SESSION['false']
)
而*格式*確實漂亮,它仍然是完全無法讀取的意圖和[應重構] 5419660 /如何對寫長-IF-更漂亮/ 5419812#5419812)。 – Gordon 2011-03-24 13:31:04
我也會把每個條件放在它自己的括號內。這在視覺上是分開的,因爲現在它只是一個運營商的湯。 – 2011-03-24 14:25:37
我喜歡列舉我的條件並將它們分組,以清楚它們的目的是什麼。
$is22 = rand(1, 100) == 22;
$someTime = $smth < time() && $smths > 5;
$meetsSx = $sxsxsx > 250;
$inSession = !$_SESSION['false'];
if ($is22 && $someTime && $meetsSx && $inSession) {
// do something
}
這種代價高昂的表達式即使第一個條件是錯誤的,也會得到計算。 – Papuass 2011-03-24 14:33:07
是的,但這些都不是太昂貴。 – 2011-03-24 15:06:04
可能
if(
rand(1, 100) == 22 &&
$smth < time() &&
$smths > 5 &&
$sxsxsx > 250 &&
!$_SESSION['false']
) {
echo "wow, big if just happened!";
}
歡呼
使您的代碼可讀性是一個非常重要的方面,當談到支持你的代碼 - 別人可能做到這一點支持。
看看coding styles(如果必須,請搜索更多信息)。
我個人格式化片斷,像這樣:
if (
rand(1, 100) == 22
&&
$smth < time()
&&
$smths > 5
&&
$sxsxsx > 250
&&
!$_SESSION['false']
)
{
echo "wow, big if just happened!";
}
$isSomethingValid = rand(1, 100) == 22
&& $smth < time()
&& $smths > 5
&& $sxsxsx > 250
&& !$_SESSION['false'];
if ($isSometingValid) {
// do something
}
這我喜歡,但唉,今天沒有更多的投票... :) – 2011-03-24 13:17:15
我喜歡這個 – 2011-03-24 13:18:11
始終縮進封閉聲明一個較塊的身體多餘的。你會寫這樣的函數:
function (reallylongparam, reallylongparam, reallylongparam,
reallylongparam, reallylongparam) {
doStuff()
}
,所以你會寫你的if語句是這樣的:
if(rand(1, 100) == 22 && $smth < time() && $smths > 5
&& $sxsxsx > 250 && !$_SESSION['false']) {
doStuff();
}
只是封裝布爾邏輯在一個單獨的功能
你也可以讓你的變量名更容易閱讀。
作爲旁註,最好將!$ _ SESSION ['false']作爲第一個測試。請記住,一旦遇到「停止」條件,PHP將停止查找。因此,把「容易」的測試或測試,可能返回False第一...現在你生成一個隨機數和得到時間之前檢查一個簡單的變量... – Carpetsmoker 2011-03-24 13:14:04
//不適用 if(false){// do代碼} 這是在99%的情況下是正確的:D – MiPnamic 2011-03-24 13:14:13