[JAVA] Ist der ternäre Operator schlecht?

Als ich das Programm eines Neulings überprüfte, der als Programmierer sein Debüt als Mitglied der Gesellschaft gab, sprach ich kurz über den ternären Operator, also werde ich es zusammenfassen. Zusammenfassend ist der ternäre Operator keine Abkürzung für die if-Anweisung.

Postscript 15.10.2015 Hier wird der "bedingte Operator" als "ternärer Operator" geschrieben. Der ternäre Operator ist ein allgemeiner Begriff für Operatoren mit drei Elementen, wie der Name schon sagt, und bezieht sich nicht direkt auf die Operation "?:". Daher war es genauer, ihn hier als "bedingten Operator" zu beschreiben. Vielen Dank bsdhack.

Was ist ein ternärer Operator?

Es ist eine Operation, die den zurückzugebenden Wert abhängig von den Bedingungen umschalten kann.

Format


[Bedingungen] ? [Rückgabewert bei TRUE] : [Rückgabewert für FALSE] ;

Stichprobe


final int MAX = 100;
int ans = 120;

int result = MAX < ans? MAX : ans;
//Ergebnis ist 100

Ein Beispiel ist der Prozess der Rückgabe von 100, wenn ans 100 oder mehr ist, und der Rückgabe von ans, wie es ist, wenn es 100 oder weniger ist.

Der Anfang der Sache

Im obigen Beispiel gab es einen solchen Quellcode.

if Anweisungsbeispiel


int ans = 120;
int result;

if(MAX < ans){
  result = MAX;
}else{
  result = ans;
}

HM. Ich fühle mich genauso wie der Prozess. Ich bin eher der Meinung, dass ein solcher Quellcode häufig als Erklärung für den ternären Operator ausgegeben wird. Warum also nicht den ternären Operator verwenden? Als ich das hörte, sagte er: "Mir wurde beigebracht, den ternären Operator nicht zu verwenden, weil es schwer zu verstehen ist." Es ist richtig, dass einige Unternehmen und Projekte Regeln haben, die ternäre Betreiber verbieten.

Nein, es wäre anders, etwas mit if zu verzweigen. Überlegen wir uns also, wie man es richtig verwendet.

if "Anweisung" und ternärer "Operator"

Wenn Sie überlegen, ob Anweisungen und ternäre Operatoren vorhanden sind, müssen Sie zunächst den Unterschied zwischen "Anweisungen" und "Operatoren" feststellen. Da die if-Anweisung eine Steuerungssyntax ist, verzweigt sie den Prozess. Andererseits dient der ternäre Operator nicht zum Verzweigen, da er als "Operator" bezeichnet wird.

Ich denke, dass es klar sein wird, wie man es richtig benutzt, wenn man sich dessen bewusst ist.

Operator

Zu den Operatoren gehören "+" und "<=". Wenn Sie noch einmal über die Bedeutung nachdenken

ans = [Gegenstand 1] + [Punkt 2]

In diesem Fall hat der Operator "+" die Funktion, die Summe der numerischen Werte von Punkt 1 und Punkt 2 zurückzugeben.

Der ternäre Operator ist also

ans = (Bedingungen) ? [Gegenstand 1] : [Punkt 2]

Es wird entweder Artikel 1 oder Artikel 2 zurückgegeben, und welcher Artikel zurückgegeben wird, hängt von den Bedingungen ab. Es wird die Funktion.

Richtig verwenden

Die if-Anweisung wird verwendet, um den Prozess zu verzweigen. Der ternäre Operator wird verwendet, wenn Sie einen von zwei (oder mehr) auswählen.

Im obigen Beispiel ist der ternäre Operator geeignet, da es sich um einen Prozess zum Auswählen von "MAX" oder "as is" handelt. Daher ist er einfacher und kürzer als das Schreiben mit einer if-Anweisung. Im Gegenteil, die Verwendung des ternären Operators, weil ich ihn kurz schreiben möchte, ist ein Chaos.

Grund zur Verwirrung

Es wird gesagt, dass "ternäre Operatoren nicht lesbar sind", und ich denke, der Grund, warum sie nicht gemocht werden, ist, dass das schlechte Muster der Verwendung von ternären Operatoren anstelle von if-Anweisungen weit verbreitet ist. Wenn Sie "process" in den ternären Operator schreiben, wird Ihnen mitgeteilt, dass die if-Anweisung in Ordnung ist.

Zusammenfassung

In diesem Artikel wurde gesagt, dass die if-Anweisung und der ternäre Operator in erster Linie unterschiedliche Rollen haben. Wenn Sie die Rolle klären und richtig verwenden, kann der Leser die Absicht des Codes verstehen und die Lesbarkeit sollte verbessert werden. Ich denke jedoch, dass es ein schwieriges Problem ist, eine Grenze zwischen "Berechnung" und "Verzweigungsverarbeitung" zu ziehen, da dies viel mit dem Zweck des zu erstellenden Programms und dem Sinn des Programmierers zu tun hat.

Recommended Posts

Ist der ternäre Operator schlecht?
Über den ternären Operator
Versuchen Sie, || anstelle des ternären Operators zu verwenden
Wie schreibt man den ternären Operator (? :)
Referenz ternärer Operator
Zuordnung zu mehreren Variablen mit dem ternären Operator
Wie viele ternäre Operatoren sind in Java zulässig?
Was ist ein Operator?
Die Migrationsdatei wird dupliziert
Ist die While-Aussage nicht böse?
Dies ist der erste Beitrag.
Was ist die BufferedReader-Klasse?
Wofür ist der Konstruktor?
Bis der Code ausgeführt wird
5. Tag von Java
Was ist die Initialisierungsmethode?
Kotlin hat keinen ternären Operator (bedingter Operator)
'% 02d' Was ist der% von% 2?
Java Basic Learning Content 3 (Operator / ternärer Operator)
Wo ist die Zeitzone von Javas LocalDateTime.now ()?
Das Biostar-Handbuch ist zu interessant
Schreiben Sie eine dritte If-Anweisung, die weder eine if-Anweisung noch ein ternärer Operator ist