3

if/else について読んでいましたが、従来の if/else ステートメントのすべて (またはほとんど) を 3 項の省略形に置き換えることが理にかなっているのか、それともより有益なのか疑問に思っています。それはそれをより速く実行しますか?それとも、コードが少ないという事実にすべての利点があるのでしょうか?

あなたの洞察に感謝します!

4

10 に答える 10

7

いずれかの方法で明確な選択肢がある場合は、基本的なロジックに 3 項の if/then ステートメントを使用する必要があります。3 項の if/then ステートメントをネストし始めると、変更を加える必要があるときやバグを修正する必要があるときに、自分自身 (または将来の後継者) の頭痛の種が増えるだけです。

高速化に関しては、3 項ステートメントと通常のステートメントの違いはわかりません。ただし、リモートで明らかにするには十分ではありませんが、ファイル サイズを数バイト削減できます。

于 2010-12-22T19:00:43.107 に答える
6

それは無意味でしょう。三項は非常に「原始的な」条件でのみ有用であり、ほとんどのifs はより複雑です。

まったく何も得られないほど多くの時間を失うことになります。

于 2010-12-22T19:00:56.047 に答える
3

コードはコンピューターではなく人間向けに書かれており、三項演算子の使用が読みにくいと感じる人もいます。

個人的には、プログラマーとして読みやすさに重点を置きたいと思うでしょう。

于 2010-12-22T19:01:54.767 に答える
1

いいえ、それらは同じコードにコンパイル/解釈されます。

最終的には、コードを読みにくく保守しにくくするだけです。

于 2010-12-22T19:00:26.313 に答える
1

パフォーマンスの向上はまったくありません。その方が本当に読みやすいです。if-else ステートメントがたくさんある場合は、そのままにしておいた方が簡単です。三項ステートメントは通常、 のような条件の割り当てに使用されます$var = $bool ? "IF TRUE" : "IF FALSE"。コードの実行を分岐する if ステートメントを実行している場合、三項は実際には意味がありません。

于 2010-12-22T19:01:11.800 に答える
0

これは古い会話ですが、私はVS2010、.NET 4.0を使用しており、三項演算子は、同等のif-thenステートメントよりも一貫して18%から22%優れたパフォーマンスを発揮します。

于 2012-01-05T23:29:07.020 に答える
0

絶対にありません。else if を追加したい場合はどうすればよいでしょうか。さらに、三項法は実際にはそれほど高速ではありません

于 2010-12-22T19:00:07.093 に答える
0

三項式はコードの実行を高速化するわけではありません。三項式は単なるショートカットに過ぎません (また、読みにくくなります)。if/else ステートメントを 3 項に置き換える場合は、十分に注意する必要があります。

if/else チェーンの各句に 1 行しかない場合 (さらに別の if ステートメントではない場合) は、おそらく安全にコードを 3 項に減らして、後から来る人なら誰でもそれを理解できると信頼できます。ただし、コードに複数の行またはネストされた if ステートメントがある場合は、それらを 3 項に変換しないでください。その場合、複雑さを増すだけです。

于 2010-12-22T19:00:17.050 に答える
0

古い ifs を変更することが、作業中のプロジェクトで推奨されるものになるとは思いません。下位互換性について考えてみてください。プロジェクトを新しいシステムにデプロイしないと、うまくいきません。

そして、あなたが物事をスピードアップしようとしているなら、この問題にはもっと良い練習があると思います.

つまり、要約すると、私はあなたがしないと思います

于 2010-12-22T19:02:22.330 に答える
0

既存のコードをいつリファクタリングするかについて、明確に定義されたインスタンスがあります。

通常の if then ステートメントから 3 項ステートメントへの変更は、その 1 つではありません。

それらはパフォーマンス上の利点をまったく提供せず、純粋にコードをより簡潔にし、場合によっては読みやすくするために存在します。

于 2010-12-22T19:08:27.340 に答える