Bearbeiten Dies ist keine Frage, ob der ternäre Operator schädlich ist oder nicht . Es geht darum, ob es einen Konsens darüber gibt, ob es außerhalb von Zuweisungsanweisungen verwendet werden soll oder nicht. /Bearbeiten
Basierend auf einem Booleschen Wert möchte ich eine von zwei verschiedenen Funktionen aufrufen (ohne Rückgabewert). Ich habe dieses Stück Javascript geschrieben:
(condition) ? doThis(arg) : doThat(arg)
Was meiner Meinung nach sauberer aussieht, als eine if-else-Erklärung zu schreiben:
if(condition) {
doThis(arg);
}
else {
doThat(arg);
}
Meine Kollegen sind der festen Überzeugung, dass ternäre Anweisungen nur in Zuweisungsanweisungen verwendet werden sollten. Ich kann keine Styleguides finden, die dies diskutieren, wahrscheinlich weil Sprachen wie Java und C # dies überhaupt nicht zulassen (ihre Compiler erfordern ternäre Operatoren, um einen Wert zurückzugeben). Sollte dies als eine schlechte Verwendung der ternären Aussage angesehen werden? Warum?
quelle
Antworten:
Im Allgemeinen soll der bedingte Operator eine if-Anweisung mit einem Wert erstellen .
w = x ? y : z
. Wenn Sie es also für Nebenwirkungen verwenden, ist es nicht intuitiv. Gültig, aber nicht intuitiv; und denken Sie daran, dass Sie Code schreiben, den Ihre Teamkollegen lesen können.quelle
Einige Fälle, bei denen es sich nicht um Zuweisungen handelt, bei denen ich ternäre Operatoren nützlich finde, sind:
In Funktionsargumenten: meiner Meinung nach
ist weniger fehleranfällig als
Wenn Sie die eine oder andere Funktion mit identischen Argumenten aufrufen möchten: wieder finde ich
weniger fehleranfällig als
Aus meiner Sicht ist das Wichtigste in jedem Fall, dass das? Form hat weniger Wiederholung. Wiederholung eröffnet die Möglichkeit, eine Instanz zu ändern und zu vergessen, die andere zu ändern.
quelle