この「ラベルを使用しない」ルールの由来はわかりません。トリビアルではないループロジックを実行するとき、ブレークまたは継続するテストは、周囲のブロックの終わりに常にきちんと終わっているとは限りません。
outer_loop:
for (...) {
// some code
for (...) {
// some code
if (...)
continue outer_loop;
// more code
}
// more code
}
はい、このようなケースは常に発生します。代わりに私が使うことを提案する人々は何ですか?このようなブール条件?
for (...) {
// some code
boolean continueOuterLoop = false;
for (...) {
// some code
if (...) {
continueOuterLoop = true;
break;
}
// more code
}
if (continueOuterLoop)
continue;
// more code
}
ヤンク!方法としてそれをリファクタリングすると、そのいずれかを緩和していません:それは少しきれいだが、それはまだ余分ブールの周りに渡しています
boolean innerLoop (...) {
for (...) {
// some code
if (...) {
return true;
}
// more code
}
return false;
}
for (...) {
// some code
if (innerLoop(...))
continue;
// more code
}
は確か。また、内部ループがローカル変数を変更した場合、それをメソッドにリファクタリングしても必ずしも正しい解決策ではありません。
なぜあなたはすべてラベルに反対していますか?私にいくつかの確固たる理由と、上記の場合の実際の選択肢を教えてください。
※4年後に更新されました:* ScalaやClojureのような機能的な言語に向けて、ラベルを使用しないことのアドバイスが正当な理由で有効である傾向が高まっています。しかし、通常のJavaの場合、上記の私の答えはまだ立っています。 –
javascrptとイベントベースの言語。したがって、豆の場合、非常に長い(おそらくあまりにも長い)イベント処理の一部でなければ、あまり有用ではないかもしれません。 – Cheruvim
トップ投票の回答が元の質問に全く反応しないことが不思議です。 ( "*私はラベルのための共通の慣習が何だったのか疑問に思っていた。すべてキャップ?最初のキャップ?*") – Jonik