Ich mag diesen Operator wirklich, aber der Leser sollte berücksichtigt werden.
Sie müssen die Codekompaktheit immer mit der Zeit abwägen, die Sie für das Lesen aufgewendet haben, und darin gibt es einige ziemlich schwerwiegende Fehler.
Zuallererst gibt es den Fall des Original Asker. Er verbrachte nur eine Stunde damit, darüber zu posten und die Antworten zu lesen. Wie lange hätte der Autor gebraucht, um jeden zu schreiben ?: Als Wenn / Dann im Laufe seines ganzen Lebens. Keine Stunde, um sicher zu sein.
Zweitens haben Sie in C-ähnlichen Sprachen die Angewohnheit, einfach zu wissen, dass Bedingungen das erste sind, was in der Zeile steht. Ich bemerkte dies, als ich Ruby verwendete und stieß auf Zeilen wie:
callMethodWhatever(Long + Expression + with + syntax) if conditional
Wenn ich lange Zeit Ruby-Benutzer gewesen wäre, hätte ich wahrscheinlich kein Problem mit dieser Zeile gehabt, aber wenn Sie von C kommen und "callMethodWhatever" als erstes in der Zeile sehen, erwarten Sie, dass sie ausgeführt wird. Das ?: Ist weniger kryptisch, aber immer noch ungewöhnlich genug, um einen Leser auszuschalten.
Der Vorteil ist jedoch ein wirklich cooles Gefühl in Ihrem Bauch, wenn Sie eine 3-zeilige if-Anweisung in den Raum von 1 der Zeilen schreiben können. Kann das nicht leugnen :) Aber ehrlich gesagt, nicht unbedingt besser lesbar für 90% der Leute da draußen, einfach wegen seiner Seltenheit.
Wenn es sich wirklich um eine Aufgabe handelt, die auf einem Booleschen Wert und Werten basiert, habe ich kein Problem damit, aber es kann leicht missbraucht werden.