forが泣いておる…
for(;;) {
// ...
if(condition) break;
// ...
}
ループ抜ける条件が複雑だったり、shii204504bySEさんのいう通り、breakしたいポイントがコードの「途中」に紛れ込む場合、whileじゃ表現できないのでやむなく、というの はあるかな。
while(true)使ったら元コードと大差ないしね。
無限ループ時は while(1) じゃなくて for(;;) を使えって、どこからでてきた規約だったかな。
検索したら、これが出てきたけど。
http://msdn.microsoft.com/ja-jp/library/6t66728h.aspx
見つかるまでループだったり、i=0; ... for(;;){ ... if(i == MAX) break; ... ++i;}が含まれてたりもするんですが、所々でgotoの代わりもしている…。
ぜーんぶこのスタイルなんでパッと見区別がつきません。汎用性高いっていうんですかね、これ。
CoolDriverJPNさん
推奨っていうか、警告回避できます、ということですか…。
基本的に皆さん「何が悪いの?」って感じなので投稿を書きなおしたほうがいいのかなーって気がしてますが、
中身が1000行近くに渡ってたり、for(;;){...}が3,4回ネストしてたりしても全部このスタイルってのが、すごく辛かったんですけどね。
> for(;;){...} が3,4回ネストしてたり
ループの書き方以前に、3重4重ネストしてることの方にウンコ臭を感じます。自分なら、「せめて」どっかの階層でメソッドにくくり出してくれ、と言いたくなるなあ。
無限ループは for(;;) で統一しようという話をどこかで読んだ気がする。オープンソースのプロジェクトのローカルルールでだけど。 コードの意図は明瞭だし全然ウンコじゃない
Whileでやれ、と言いたいが「途中に」Breakがあるのがポイントか。うーん…