両方の方法で実装できる条件付きコードを実装したい場合。では、条件演算子 ?: と if..then..else のどちらが優れていますか??
3 に答える
場合によります。一般に、アクティビティの主要なフローをコードの構造で表す必要があります。アルゴリズムの要点が変数のx
初期化である場合、最良の解決策は条件演算子を使用することです。
x = condition ? f1() : f2();
決定が何が起こっているのかを理解するための重要な問題である場合は、を優先しif
ます。実際には、これは、両方が合理的に可能である場合は、を使用することを意味します?:
。重要なのは「合理的」です。部分式でコンマ演算子を使用していることがわかった場合、部分式の中には副作用があり、使用すること?:
はおそらく「合理的」ではありません。
編集:
演算子を使用する?:
場合、最も単純な場合を除いて、次のように正確にフォーマットする必要がありますif
。
x = condition
? complex_expression_1
: complex_expression_2;
私はこれを定期的に行います。(プッシュする特殊なケースがあります。関数全体を単一のreturnステートメントに減らすことができる場合。コンマ演算子の副作用は許可しませんが、それ以外の場合よりも複雑な式を使用することがあります。だろう。)
まったく同じではないにしても、かなり近いです。バイトコードにわずかな違いがある場合でも、パフォーマンステストをいつでも実行できます。
バイトコードをチェックするためにチェックアウトjavap and jad
コンパイラによって異なりますが、最近のコンパイラでは、if elseと三項演算子の間に違いはありません。「条件演算子を使用すると、コンパイラは常により効率的なコードを生成します」と信頼しないでください。