我正在尋找更好的替代方案,以下代碼。假設一些常用的編程語言(C/C++,JAVA,...):替代「while」循環
1)
while(true) {
foo = ... something ugly ...
if(foo == null) break;
... some code
}
不是很好,因爲使用一個循環,直到永在可能成爲 「迷失」 休息一些代碼的中間。
2)
foo = ... something ugly ...
while(foo != null) {
... some code
foo = ... something ugly ...
}
不是很好,因爲分配給 「foo」 被複制。同樣在這種情況下:
2B)
for(foo = ... something ugly ...;
foo != null;
foo = ... something ugly ...) {
... some code
}
3)
goto INIT:
while(foo != null) {
... some code
INIT: foo = ... something ugly ...
}
「GOTO」 到一個循環的中間。
4)
do {
foo = ... something ugly ...
if(foo != null) {
... some code
}
} while (foo != null)
條件被複制。
這似乎很奇怪,所以很常見沒有很好的實現。
選項4有什麼問題? – biziclop
選項1有什麼問題? – SLaks
@biziclop:條件「foo!= null」必須重複。如果條件比較複雜,或者是對另一個函數的調用,則可能是一個問題。 –