2010-02-23 108 views

回答

0

讓我有幾個問題回答:

  • 爲什麼不應該它被認爲是好的做法呢?

  • 它會降低代碼的可讀性嗎?

  • 它會減慢你的週期嗎?

1

在光線使用方面,它可以,但在使用量很大的情況下,它會讓您的代碼通心粉。 breakcontinue基本上只是一個受限制的goto,因此,謹慎使用。

+1

除了goto的事實,你永遠不知道它是向後還是向前跳。隨着休息和繼續,你知道它跳到哪裏 – jab 2010-03-22 11:17:01

1

它絕對是,它們都是有效的編程結構。

不是什麼好主意是新推出的GOTO。 (請告訴我這是一個愚人節玩笑,我沒有看到關於它的提示!)

+0

PHP有'goto' !!? – Earlz 2010-02-23 00:15:09

+5

當php.net頁面包含XKCD漫畫時,你真的很想知道 – Erik 2010-02-23 00:21:52

+0

是的。我的意思是,當編程語言已經具有不專業的形象時,你需要什麼?你添加* goto *。嘖。 – 2010-02-23 00:21:58

0

在Python中,我們使用無限循環和break來提高可讀性。所以,是的,你可以使用它,只要你做得對,並有一個很好的理由。

4
do { 
if (condition1) 
    break; 
some code; 
some code; 
if (condition2) 
    break; 
some code; 
some code; 
if (condition3) 
    break; 
some code; 
some code; 
} while (false); 

if (!condition1) { 
    some code; 
    some code; 
    if (!condition2) { 
     some code; 
     some code; 
     if (!condition3) { 
     some code; 
     some code; 
     } 
} 

一些人找到的第一個版本的abhomination和難以閱讀和愛的第二個版本。有些人發現第一個版本更清潔,更容易閱讀。隨着條件數量的增加,我傾向於發現第一個版本更容易遵循,因爲第二個版本越來越難以遵循嵌套層次。另外,如果if (condition) break;進入只有更復雜的東西,如if (condition) {some code; break}do {if .. break; if .. break..;} while(false)模式與同等嵌套ifs相比更加清晰。

0

關於PHP中斷和繼續的討論(和一般循環)看看Advanced loops - 你會得到一個印象,即作者可以設法吞下break和continue,但不會中斷n並繼續n。 :-)

0

在5年以上的PHP編程中,我從來不必在switch語句之外使用break。

繼續有時用於跳過迭代中的第一個或最後一個項目,但我不太喜歡它。

他們爲什麼再次引入GOTO?這是一個恥辱

要回答這個問題,在

if (!empty($var)) 
    break; 

爲什麼(在方法方面如果)不使用回

if (!empty($var)) 
    return false; 

我覺得這種方式多清晰,使得來電者知道里面發生了什麼。對於參數錯誤更好的使用方法是使用Excecptions,這可以在執行時突破它們提出的要點。

1

只要它有助於使代碼更易於閱讀和理解,使用breakcontinue是完全正確的。我個人很少使用它們,只有當我不能輕易使用另一種結構時。

在大多數while語句的情況下,很容易通過使用布爾變量作爲用於在第一位置的循環中的條件,然後改變其在循環內的值以達到相同的結果作爲breakcontinue

在另一方面,最好的用例爲break,在我看來,是節約,如果你是通過一個數組或一個forforeach塊類似的迭代,並僅在處理元件興趣,直到一些資源項目已到達。通過在到達此元素後使用break,可以通過跳出循環來節省處理能力,而無需通過其餘元素。這使得代碼更加高效,而不會使其不易讀取。

當然,如果沒有break,則使用switch語句實際上是不可能的。

另一個例外是如果您需要控制嵌套結構,在這種情況下,使用break ncontinue n比同時操作多個變量更簡單。 (儘管這個用例可能是最有爭議的......)

相關問題