In vielen Sprachen sind Aufträge unter bestimmten Bedingungen legal. Ich habe den Grund dafür nie verstanden. Warum würdest du schreiben:
if (var1 = var2) {
...
}
anstatt:
var1 = var2;
if (var1) {
...
}
In vielen Sprachen sind Aufträge unter bestimmten Bedingungen legal. Ich habe den Grund dafür nie verstanden. Warum würdest du schreiben:
if (var1 = var2) {
...
}
anstatt:
var1 = var2;
if (var1) {
...
}
Antworten:
Es ist für Schleifen nützlicher als für if-Anweisungen.
Was sonst geschrieben werden müsste
quelle
Ich finde es am nützlichsten in Aktionsketten, die häufig eine Fehlererkennung usw. beinhalten.
Die Alternative (ohne Verwendung der Zuordnung in der Bedingung) ist:
Bei langwieriger Fehlerprüfung kann die Alternative von der rechten Seite der Seite ausgeführt werden, während die Version mit bedingter Zuweisung dies nicht tut.
Die Kontrollen Fehler könnte auch sein , ‚Aktionen‘ -
first_action()
,second_action()
,third_action()
- natürlich nicht nur überprüft. Das heißt, sie könnten Schritte in dem Prozess sein, den die Funktion verwaltet. (Meistens befinden sich die Funktionen in dem Code, mit dem ich arbeite, im Sinne von Vorbedingungsprüfungen oder Speicherzuweisungen, die für die Funktion der Funktion erforderlich sind, oder in ähnlicher Weise).quelle
Es ist nützlicher, wenn Sie eine Funktion aufrufen:
Sicher, Sie können einfach n = foo () setzen; auf einer separaten Aussage dann wenn (n), aber ich denke, das obige ist eine ziemlich lesbare Redewendung.
quelle
Dies kann nützlich sein, wenn Sie eine Funktion aufrufen, die entweder Daten zur Bearbeitung oder ein Flag zurückgibt, um einen Fehler anzuzeigen (oder wenn Sie fertig sind).
Etwas wie:
Persönlich ist es eine Redewendung, die ich nicht besonders mag, aber manchmal ist die Alternative hässlicher.
quelle
GCC kann Ihnen helfen, (mit -Wall) zu erkennen, ob Sie unbeabsichtigt versuchen, eine Zuweisung als Wahrheitswert zu verwenden, falls empfohlen wird, dass Sie schreiben
Verwenden Sie zusätzliche Klammern, um anzuzeigen, dass dies wirklich das ist, was Sie wollen.
quelle
Die Redewendung ist nützlicher, wenn Sie eine
while
Schleife anstelle einerif
Anweisung schreiben . Für eineif
Aussage können Sie sie wie beschrieben aufteilen. Aber ohne dieses Konstrukt müssten Sie sich entweder wiederholen:oder verwenden Sie eine anderthalb-Schleifen-Struktur:
Normalerweise würde ich die eineinhalb Loop-Form bevorzugen.
quelle
while
Verwenden Sie für eine Schleife lieber:do { c = getchar(); ... } while (c != EOF);
for
Schleifen können stattdessen verwendet werden:for (char c = getchar(); c != EOF; c= getchar()) { /* do something with c */ }
- das ist die prägnanteste, undfor
sagt immer ‚Loop‘ mir, stilistisch. Ein kleiner Nachteil ist, dass Sie die Funktion angeben müssen, diec
zweimal zurückgibt.Die kurze Antwort lautet, dass ausdrucksorientierte Programmiersprachen prägnanteren Code ermöglichen. Sie zwingen Sie nicht, Befehle von Abfragen zu trennen .
quelle
In PHP ist es beispielsweise nützlich, um SQL-Datenbankergebnisse zu durchlaufen:
Das sieht viel besser aus als:
quelle
Der andere Vorteil ergibt sich aus der Verwendung von gdb. Im folgenden Code ist der Fehlercode nicht bekannt, wenn es sich um einen einzelnen Schritt handelt.
Lieber
Jetzt können wir im Einzelschritt anhand von checkstatus () den Rückgabefehlercode ermitteln.
quelle
Ich finde es sehr nützlich bei Funktionen, die Optionen zurückgeben (
boost::optional
oderstd::optional
in C ++ 17):Dies reduziert den Umfang meiner Variablen, macht den Code kompakter und beeinträchtigt nicht die Lesbarkeit (finde ich).
Gleiches gilt für Zeiger:
quelle
Der Grund ist:
Leistungsverbesserung (manchmal)
Weniger Code (immer)
Nehmen Sie ein Beispiel: Es gibt eine Methode
someMethod()
und in einerif
Bedingung möchten Sie überprüfen, ob der Rückgabewert der Methode istnull
. Wenn nicht, werden Sie den Rückgabewert erneut verwenden.Dies beeinträchtigt die Leistung, da Sie dieselbe Methode zweimal aufrufen. Verwenden Sie stattdessen:
quelle