Was ist der sauberste Weg dies zu schreiben, wenn ... dann Logik?

8

Beide machen das Gleiche. Ist eine Möglichkeit besser? Wenn ich den Code schreibe, weiß ich natürlich, was ich getan habe, aber wie sieht es mit jemand anderem aus, der es liest?

%Vor%

ODER

%Vor%     
Mike Roosa 29.01.2009, 21:50
quelle

17 Antworten

30
%Vor%

Ich bevorzuge das.

Oder die Alternative:

%Vor%     
Andrew Rollings 29.01.2009, 21:54
quelle
24

Ich glaube, es ist besser, das nicht (Negation) zu entfernen und die positive Behauptung zuerst zu bekommen:

%Vor%

-oder-

%Vor%     
Gavin Miller 29.01.2009 21:58
quelle
21

Ein Stilproblem:

%Vor%

Wenn du die doppelte Negation annullierst, liest es sich viel besser, egal welcher Klammerstil du wählst. Code, der besser liest, ist immer am besten;)

    
krosenvold 29.01.2009 21:59
quelle
9

Der zweite Weg ist besser, keine Verwirrung darüber, was du meinst ...

    
Scott Evernden 29.01.2009 21:54
quelle
9

Ich denke, das ist eine ziemlich kleine Frage des Stils. Ich würde argumentieren, dass Ihre zwei Proben gleichermaßen lesbar sind.

Ich bevorzuge das erstere, aber andere Menschen bevorzugen nur einen Ausgangspunkt von einer Funktion und würden wahrscheinlich etwas vorschlagen wie:

%Vor%     
Dana 29.01.2009 21:56
quelle
5

Ich mag das erste Beispiel, weil es offensichtlicher ist, dass dieser Auszug zurückkommt . Wenn sich beide return s in eingerückten Blöcken befinden, braucht es nur etwas mehr mentale Anstrengung, um es zu sagen.

    
recursive 29.01.2009 21:56
quelle
1

Beseitigen Sie das "doppelt negative" und verwenden Sie den vollständig erweiterten Stil. Ich bin mir sicher, dass die meisten Compiler jetzt den Code in Ihrem Namen optimieren können. Es gibt also keinen Grund, Abkürzungen für die Lesbarkeit zu wählen.

    
user60400 29.01.2009 22:06
quelle
1

Wenn es die Gesamtheit der Methode ist, dann würde ich sagen, dass die zweite (mit dem else) ein bisschen eleganter ist. Wenn Sie vorher Code oder (besonders) viel mehr Code vor der Rückkehr im else Fall haben, würde ich sagen, dass es besser ist, das else nicht zu setzen. Es wird verhindert, dass der Code zu stark eingerückt wird.

d. entweder:

%Vor%

oder

%Vor%     
Owen 29.01.2009 22:11
quelle
1

Dieser Code fühlt sich wegen der unvermeidlichen doppelt negativen Logik chaotisch an (und das Mischen von Dingen wird es nicht aufräumen). Welche Anordnung Sie auch verwenden, ich denke, Sie sollten einige Kommentare hinzufügen, damit der Leser nicht doppelt vorgehen muss:

%Vor%     
too much php 30.01.2009 00:47
quelle
0

Wie wäre es mit:

%Vor%     
mbeckish 29.01.2009 21:59
quelle
0

Glauben Sie nicht, dass es einen besseren Weg gibt ... es hängt von jedem Entwickler ab. Aus diesem Grund sollten Sie vor dem Start eines Projekts entscheiden, was der Codierungsstandard ist ...

    
bcorriveau 29.01.2009 22:00
quelle
0

Als hier , aber besser lesbar:

%Vor%

So funktioniert, ist lesbar und nicht redundant.

    
Skeolan 29.01.2009 22:13
quelle
0

Ich mag die ersten besser.

%Vor%

Für mich liest es sich wie ein "Standard" Sie können weitere Bedingungen verketten, aber am Ende gibt es einen Standard.

Natürlich ist es eine Frage des Stils.

Zusätzliche Frage.

Ist es C # -Stil, die eckigen Klammern und in einer einzigen Zeile zu setzen?

%Vor%

Ich habe gesehen, dass dies in Java-Code-Samples in SO eingedrungen ist, und ich frage mich, ob das die Ursache ist.

BEARBEITEN

@Owen. Ich meine, ist es C # Stil mit diesem Formular?

%Vor%

Anstatt dies (was wäre Java bevorzugt )

%Vor%

Ich hatte in der Vergangenheit einige Argumente dafür, aber meistens nur mit Leuten, die aus C # stammen.

    
OscarRyz 29.01.2009 22:37
quelle
0

Aus Wartungssicht bevorzuge ich die erste Version. Ich habe weniger Fehler mit einem konsistenten "Ausstieg früh" -Stil gesehen.

Der ternäre Operator (? :) ist OK, aber nur, wenn es sehr unwahrscheinlich ist, dass neuer Code vor der 2. return-Anweisung eingefügt wird. Andernfalls, wenn die Zeit gekommen ist, etwas Neues in den zweiten Codepfad einzufügen, muss die ternäre Anweisung sowieso wieder ein if / else-Block sein.

    
devstuff 29.01.2009 22:38
quelle
0

Wenn ich nur eine Zeile habe, komprimiere ich die if-Anweisung wie folgt:

%Vor%

Obwohl Andrew Rollings die beste Lösung bietet, obwohl ich bis heute nicht daran gedacht hätte, sie zu verwenden.

    
Ray Hidayat 29.01.2009 23:35
quelle
0

LFSR "sonst "Lösung ist am besten wartbar und lesbar.

Die Verwendung einer separaten else -Klausel ermöglicht das Hinzufügen von Logik, ohne den Ablauf versehentlich zu ändern. Und es ist schlimm genug, mehrere Ausstiegspunkte zu haben, ohne zwei davon in einer einzigen ternären Operatoranweisung zu verstecken!

    
Tom A 30.01.2009 00:04
quelle
-1

Der erste. Sie brauchen nichts anderes, wenn Sie einen Wert innerhalb der if-Anweisung zurückgeben. Also:

%Vor%     
igorgue 29.01.2009 22:11
quelle

Tags und Links