回答
讓我有幾個問題回答:
爲什麼不應該它被認爲是好的做法呢?
它會降低代碼的可讀性嗎?
它會減慢你的週期嗎?
在光線使用方面,它可以,但在使用量很大的情況下,它會讓您的代碼通心粉。 break
和continue
基本上只是一個受限制的goto
,因此,謹慎使用。
除了goto的事實,你永遠不知道它是向後還是向前跳。隨着休息和繼續,你知道它跳到哪裏 – jab 2010-03-22 11:17:01
在Python中,我們使用無限循環和break來提高可讀性。所以,是的,你可以使用它,只要你做得對,並有一個很好的理由。
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相比更加清晰。
關於PHP中斷和繼續的討論(和一般循環)看看Advanced loops - 你會得到一個印象,即作者可以設法吞下break和continue,但不會中斷n並繼續n。 :-)
在5年以上的PHP編程中,我從來不必在switch語句之外使用break。
繼續有時用於跳過迭代中的第一個或最後一個項目,但我不太喜歡它。
他們爲什麼再次引入GOTO?這是一個恥辱
要回答這個問題,在
if (!empty($var))
break;
爲什麼(在方法方面如果)不使用回
if (!empty($var))
return false;
我覺得這種方式多清晰,使得來電者知道里面發生了什麼。對於參數錯誤更好的使用方法是使用Excecptions,這可以在執行時突破它們提出的要點。
只要它有助於使代碼更易於閱讀和理解,使用break
或continue
是完全正確的。我個人很少使用它們,只有當我不能輕易使用另一種結構時。
在大多數while
語句的情況下,很容易通過使用布爾變量作爲用於在第一位置的循環中的條件,然後改變其在循環內的值以達到相同的結果作爲break
或continue
。
在另一方面,最好的用例爲break
,在我看來,是節約,如果你是通過一個數組或一個for
或foreach
塊類似的迭代,並僅在處理元件興趣,直到一些資源項目已到達。通過在到達此元素後使用break
,可以通過跳出循環來節省處理能力,而無需通過其餘元素。這使得代碼更加高效,而不會使其不易讀取。
當然,如果沒有break
,則使用switch
語句實際上是不可能的。
另一個例外是如果您需要控制嵌套結構,在這種情況下,使用break n
或continue n
比同時操作多個變量更簡單。 (儘管這個用例可能是最有爭議的......)
- 1. 抽象使用的API是否是一種好的做法?
- 2. PHP中存在「break continue」嗎?
- 3. 是否總是在DAL基類中使用TransactionScope是一種好的做法?
- 4. Java:在XML中定義bean是否是一種好的做法?
- 5. 在Redux商店中配置是否是一種好的做法?
- 6. 什麼是「break/continue $ var語法」(將在PHP 5.4中刪除)?
- 7. 在業務邏輯中使用反射是否是一種好的做法?
- 8. 將Solr用作數據庫是否是一種好的做法
- 9. 總是加入SQL表是否是一種很好的做法?
- 10. 'continue'和'break'語句是否適用於... in?
- 11. 在另一種方法的參數列表中調用方法是否是Java中的一種良好做法?
- 12. 用「使用」來引用特定項目是否是一種很好的做法?
- 13. 存儲計算值是否是一種很好的做法?
- 14. 鏈接libstdC++ static是否是一種好的做法?
- 15. 拆分CSS是否是一種很好的做法?
- 16. 分配後清除()bytebuffer是否是一種好的做法?
- 17. 忽略腳本類型是否是一種好的做法?
- 18. 您是否認爲ASP.NET WebForms是一種不好的做法?
- 19. 捕獲意外異常是否是一種好的做法?
- 20. 從構造函數中調用方法是否是一種很好的做法?
- 21. 是否包含未使用的JavaScript文件是一種不好的做法?
- 22. 是否使用Java的默認包是一種不好的做法?
- 23. 在php中使用數組對象是一種很好的做法?
- 24. instanceof是一種好的做法嗎?
- 25. JavaScript:window.spam是一種很好的做法嗎?
- 26. 使用「/>」結束coldfusion自閉標籤是否是一種好的做法?
- 27. 設計數據庫時使用表前綴是否是一種好的做法?
- 28. 在PHP中聲明類的ctor'final'是否是不好的做法?
- 29. PHP中「break」或「continue」後的數字是什麼意思?
- 30. 在css文件中輸入地圖文件是否是一種好的做法?
是的。這些陳述是有原因的。 – zneak 2010-02-23 00:11:32