2010-06-12 44 views
7

哪個更好?使用if ... else ...或者只是...確定返回的內容

function test($val = 'a') { 
    if($val == 'a') { 
     return true; 
    } 
    return false; 
} 

實際上,他們做同樣的事情。如果$val不是'a',則該函數返回false。只是個人喜好?

+0

如果else塊有很多行,我猜是遞歸的一部分呢?這對我來說感覺有點困惑(似乎無法在註釋中正確地格式化代碼?):'private Node deleteMin(Node x)if(x.left == null)return x.right; x.left = deleteMin(x.left); x.N = size(x.left)+ size(x.right)+ 1; return x; }' – allanx2000 2015-12-14 21:00:05

回答

7

我認爲這歸結於如何比較「感覺」給你。如果它看起來像$ val是「a」是一個特殊情況,我會使用第一個,並且通常該函數返回false。如果覺得它更像是50/50,那麼我會用第二個。

22

它們是相同的。然而,對於這種情況,我更喜歡:

function test($val = 'a') { 
    return ($val == 'a'); 
} 
0

我會堅持第一個,代碼越簡單越好。

9

在這些,我更喜歡第二個清晰。然而,我其實更喜歡

return ($val == 'a'); 
0

當你正在閱讀第二個代碼塊。當val不等於'a'時,你可以很容易地認爲它返回false。

但是在第一個代碼塊中,它很難理解它什麼時候會返回false。這個例子並不難,但我認爲你的if子句不會那麼簡單。

3

在PHP中,如果在函數中沒有做任何事情,並且達到了最終結果,它將會像返回false一樣。正因爲如此,如果在函數內部不執行任何其他操作,則不需要返回false。這給我們留下了這一點:

function test($val = 'a') { 
    if($val == 'a') { 
     return true; 
    } 
} 

如果,如果,ELSEIF或else語句後只有一個命令,在大括號(「{」「}」)是沒有必要的,這使我們結束了這:

function test($val = 'a') { 
    if($val == 'a') return true; 
} 

在PHP中,您實際上可以返回一個比較,它將在返回之前執行。這就是其他回答這個帖子的人建議的。這樣做可以讓我們使用此代碼:如果塊「($ VAL ==‘A’)」成立

function test($val = 'a') { 
    return ($val == 'a'); 
} 

返回True,否則爲false將被退回,因爲這是不正確的。邏輯。

我實際上傾向於使用我提出的第二個約定,出於習慣。看到其他人提出的第三個簡單的美,我可能會在適用的時候切換到那個簡單。

編輯:

如果要編寫代碼,對於非PHP專家更容易理解,另一種方法是如下:

function test($val = 'a') { 
    if($val == 'a') 
     return true; 
    else 
     return false; 
} 

我會說,不使用大括號在我的第二個示例中描述的情況下,爲您提供了易於閱讀的代碼,因爲如果它們不包含多行,則大括號會使代碼看起來雜亂無章。

+3

這可能都是真實且準確的,但前兩個例子不會導致PHP專家以外的任何人都清楚易懂的代碼。只有第三個對大多數程序員是清楚的。 – 2010-06-13 01:49:17

+0

這就是說,這篇文章是關於PHP程序員,所以他的觀點是完全有效的。今天我學到了一些關於PHP的新東西! – Blindy 2010-06-13 07:21:52

+0

我確實同意第三個例子是最邏輯的例子,因爲它意味着存在「返回錯誤」。但是,瞭解和理解這些有關編程語言的東西_可以幫助人們編寫更容易理解和更高效的代碼,所以我寫了這些。 – Emanuel 2010-06-13 16:30:35

2

我真的相信這是你試圖傳達給代碼的意圖。如果你看看這個:

function test($val = 'a') { 
    if($val !== 'a') { 
     return false; 
    } 
    return true; 
} 

你可以看到它和你的例子有相同的作用,但它有不同的意圖。在這個例子中它真的不會作出任何意義有:

function test($val = 'a') { 
    if($val !== 'a') { 
     return false; 
    } 
    else { 
     return true; 
    } 
} 

我認爲@Ned了吧,因爲他想傳達的if操作的意圖。

+2

你的(第一個)變體是快樂路徑的一個很好的例子。 http://en.wikipedia.org/wiki/Happy_path – 2010-06-13 06:57:41

+0

'藍色藥丸或紅色藥丸......'大聲笑!快樂之路永遠是更好的道路! – Gutzofter 2010-06-13 16:46:24

0

不是:

下面的方法比較好,還有的else和代碼沒有更多的開銷也短:

function test($val = 'a') { 
    if($val == 'a') { 
     return true; 
    } 
    return false; 
} 

它可以作出更短:

function test($val = 'a') 
{ 
    return ($val == 'a'); 
} 
1

如果你沒有返回boolean我會選擇第一種形式。在這種情況下,我只會這樣做:

return ($val == 'a'); 

正如其他人所建議的那樣。