while (true) with breakはプログラミングの悪しき習慣か?
質問
このコードパターンをよく使います。
while(true) {
//do something
if(<some condition>) {
break;
}
}
別のプログラマは、これは悪い習慣なので、もっと標準的なものに置き換えるべきだと教えてくれました。
while(!<some condition>) {
//do something
}
彼の理由は、あまりにも簡単に break" を忘れてしまい、無限ループになる可能性があるということでした。私は彼に、2 番目の例では、決して true を返さない条件を置くことができ、同様に簡単に無限ループになるため、どちらも同様に有効なプラクティスであると言いました。
さらに、私はしばしば前者を好みます。複数のブレークポイント、すなわちループから抜け出す複数の条件があるときに、コードを読みやすくなるからです。
誰か、どちらかの側の証拠を追加することによって、この議論を豊かにすることができますか?
どのように解決するのですか?
2つの例の間には食い違いがあります。1 つ目の例では、ステートメントが決して true にならない場合でも、毎回少なくとも 1 回は "do something" が実行されます。2 番目の例では、ステートメントが true と評価されたときのみ "do something" が実行されます。
あなたが探しているものは、do-while ループだと思います。私は、以下のことに100%同意します。
while (true)
は良いアイデアではありません。なぜなら、このコードを保守するのが難しくなり、ループをエスケープする方法は非常に
goto
的であり、バッドプラクティスと考えられています。
試してみてください。
do {
//do something
} while (!something);
正確な構文については、各言語のドキュメントを確認してください。しかし、このコードを見てください、それは基本的にdoの中にあるものを行い、そしてそれを再び行うべきかどうかを確認するためにwhileの部分をチェックします。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン