Ich benutze den ternären Operator übermäßig, manchmal ersetze ich sogar sehr einfache if-Anweisungen damit. Zum Beispiel habe ich mich gerade etwas gefunden, wie diese zu ersetzen:Mit dem ternären Operator von Java, was bedeutet es, sich selbst eine Variable zuzuweisen?
if (foo != null) {
bar = foo;
}
mit diesem:
bar = (foo == null) ? bar : foo;
Zwar ist es eine Frage des Geschmacks ist, die man liest, schöner, ich frage mich:
- Ist in diesem Fall die Leistung der ternären Version schlechter?
- Gibt es noch andere Gründe gegen die Verwendung von ternären hier?
Der Grund, warum ich die Leistung belive hier schlimmer sein könnte, ist, dass ich der Compiler nicht davon ausgehen, die ternäre für optimieren kann, wenn foo
ist null
. Daher könnte der Wert von bar
wieder auf den gleichen Wert gesetzt werden, wodurch eine gewisse CPU-Zeit verschwendet wird, wobei die einfache if
-Anweisung niemals an diesen Punkt gelangen würde. Aber mein Wissen über Compiler und Ausführung ist begrenzt, daher die Frage.
Die Idee von etwas, das unter bestimmten Bedingungen in "bar = bar" "kollabiert", ist für mich seltsam. Die erste (mit der 'if'-Anweisung) ist ausführlicher, aber viel lesbarer und klarer. Meine $ 0.02 – Taylor
Sie haben bereits Ihre eigene Frage beantwortet. das ist "Overhead" und unzweckmäßige Verwendung des ternären Operators. – Andrew
Warum unterscheidet es sich von der Zuweisung von "i = i" für jede andere Variable? –