if ステートメントは、論理演算子を使用した if ステートメント、 if...else、ネストされた if ステートメントなど、さまざまな方法で使用できることを知っています。
&&、||などの論理演算子を使用する場合 多数の条件を確認する場合、入れ子になった if 文を複数使用する場合よりもコード サイズが小さくなります。このifステートメントを条件演算子で使用することの他の利点(実行時、デバッグ、コンパイル時の利点など)はありますか?
if
ステートメントを使用する場合と比較して、条件演算子を使用する場合のパフォーマンス上の利点はありません。コードの 2 つのバージョンが同等である場合、JIT コンパイラが同等のパフォーマンスを持つコードを生成しないと期待する理由はありません。
コンパイル時間のパフォーマンスの問題は無関係です...分単位で測定される(完全な)ビルド時間と比較して、ミリ秒未満の違いです。
本当の違いは読みやすさにあります。一部の計算は、条件式を使用してより簡潔に表現でき、場合によってはコードが読みやすくなります。読みやすさは重要です。なぜなら、あなたや他の人々があなたのコードをデバッグおよび保守する能力に影響を与えるからです。
ただし、読みやすさは、コードとリーダーの洗練度の両方に依存します。したがって、「高度な」構造を使用することによる読みやすさの効果について一般化することは困難です。
これを例として挙げます:
if (condition 1) { if (condition 2) { if (Condition 3){ statement 1; } else nothing; } else nothing; } else statement 3;
対
if (condition 1 && condition 2 && condition 3) { statement 1; } else statement 2;
まず、&&
演算子は論理演算子であり、条件演算子ではありません。(はい、それは短絡演算子ですが、論理演算子と呼ばれるという事実は変わりません!!)条件演算子は三項?
演算子です。
第二に、読みやすさの議論は(ほとんどの場合)&&
(および||
)を支持して傾いていますが、とにかく同じ議論が適用されます。コードの 2 番目のバージョンを読むのに問題があるのは、まったくの初心者だけです。
可読性の他に、短絡評価も重要な理由だと思います。では、ここで結論を出すべきでしょうか。
実際、これはまったく違いはありません。ショートサーキットは、ネストされた/ステートメント&&
を使用して取得 (できる) ものと同等です。(論理演算子と論理演算子を比較すると、実際に違いが生じます。)if
else
&&
&
性能面でのメリットはないと思います。
コードの観点からは、if-else ブロックが簡素化されます。ただし、ネストされた if-else を三項演算子を使用して実装しようとすると、複雑になり、保守が難しくなります。