2012-11-05 110 views
2

什麼是寫for循環的普遍共識if語句是這樣的:for循環的語法使用,如果內部語句

for (int i = 0; i < hi; i++) { 
    if (some invalid condition) { 
     continue; 
    } 

    if (another invalid condition) { 
     continue; 
    } 

    //do stuff here after passing all the invalid conditions 
} 

,而不是

for (int i = 0; i < hi; i++) { 
    if (valid condition1 && valid condition 2 && ...) { 
     //do stuff 
} 

這在我看來,第一種方式它的編寫更加清潔,調試更方便,儘管它佔用了更多的線路。我的主要問題是如果以第二種方式編寫它是否有任何優勢。即使只有一個if語句,看起來好像寫它,第一種方式會更好地使它更容易在將來進行維護/調試。

回答

2

循環中的「CONTINUE」非常罕見。在大多數情況下,在循環內遇到無效情況自然會導致「BREAK」。但是,您的示例沒有任何問題,如果這適合您的業務邏輯,它可能確實更合適。

0

有些人不喜歡continue,因爲它實際上是goto。例如,考慮:

for (int i = 0; i < hi; i++) { 
    .... 
    do_this_for_each_full_iteration(); 
} 

如果....包含任何continue報表時,do_this_after_each_full_iteration()將被忽略。

這些傾向於是從功能中間不喜歡return的人。

+0

休息怎麼樣,爲什麼更好? – SomeWittyUsername

+1

'break'不太有爭議,因爲它退出循環而不是假裝當前迭代成功運行。儘管如此,仍然有人不喜歡「休息」。而'continue'和'return'則意味着如果你想執行「就在完成之前」,你必須在循環體/函數*和*的每一個末尾加上'continue' /'return'。 –

+0

好點,雖然我覺得這整個事情都被誇大了。我敢打賭,90%不使用「goto」的人不知道爲什麼。 – SomeWittyUsername