インターネットのいたるところで、Java で label ステートメントを使用することは避けるべきだと人々は言います。ただし、ネストされたループなど、場合によっては非常に便利です。
なぜそれらを使用しないのかについて、満足のいく答えが見つかりません。ラベルに代わるものは、読みやすさ、パフォーマンス、またはその両方を低下させることが多いと思います。
では、ラベル付きの break および continue ステートメントがそれほど悪いのはなぜでしょうか?
インターネットのいたるところで、Java で label ステートメントを使用することは避けるべきだと人々は言います。ただし、ネストされたループなど、場合によっては非常に便利です。
なぜそれらを使用しないのかについて、満足のいく答えが見つかりません。ラベルに代わるものは、読みやすさ、パフォーマンス、またはその両方を低下させることが多いと思います。
では、ラベル付きの break および continue ステートメントがそれほど悪いのはなぜでしょうか?
ラベルは、ネストされた for ループから完全に抜け出すことができます。
PS:個人的には、入れ子になったループを別のメソッドに入れてから抜け出すことをお勧めします (これについては Kent Beck に従っています。彼の実装パターンreturn
の本を参照してください) 。リターンポイント」の人々、私に。インターネット、ああ、インターネット。
最も一般的な議論は、初心者には解釈が難しいというものです。もう 1 つの議論は、(多すぎる) ネストされたループは悪い習慣と見なされるというものです。言い換えれば、ラベルを見ると、ネストされたループがほぼ確実に存在し、それがラベルを暗黙的に悪いものにしています。一般的な方法は、ネストされたループをメソッドにリファクタリングすることです。これにより、保守性などが向上するはずです。ただし、入れ子になったループが、ほんの数行のコードで明らかなこと以外のことをしていない場合、私の意見では、それは完全に手頃な価格です。
ラベル付けされた break ステートメントと continue ステートメントの両方が完全に不要であることがわかりました。それはただのスタイルの問題です。同じ結果を達成する他の方法があり、多くの人がそれらを好みます。
メソッドが 1 つのことだけを行い、それを適切に実行する限り、ラベルを避ける必要はありません。
ただし、ラベル付きの break ステートメントと continue ステートメントが必要な場合は、メソッドがまだ十分にまとまっているかどうかを簡単に確認してください。