Sind leere wahre Blöcke ein Idiom in JavaScript?

8

Ich bin gerade auf einen Code gestoßen, der so aussieht:

%Vor%

Gibt es einen guten Grund dafür, dass jemand es so schreibt anstatt

? %Vor%

oder ich habe es nur mit einem rasenden Wahnsinnigen zu tun (dies ist meine Annahme, die auf anderen Dingen im Code basiert).

    
Chas. Owens 24.08.2011, 17:38
quelle

7 Antworten

3

Wenn einer meiner Entwickler Code auf diese Weise schrieb, würde ich ihn mit einem Verweis und einer Kopie von "Javascript: Die guten Teile" zurückwerfen. Ich kann mir keinen einzigen guten Grund dafür vorstellen.

Außerdem sollten sie ihren Vergleich als if (foo === "bar") geschrieben haben. Viel bessere Praxis.

Bearbeiten Sie eineinhalb Jahre später:

Aus Langeweile habe ich ein JSperf zusammengezimmert, nur um zu sehen, ob es einen merklichen Leistungsunterschied zwischen den beiden im OP gezeigten Methoden gibt, und [SPOILER WARNING] nein gibt es nicht. p>

Ссылка

    
Scottie 24.08.2011, 17:43
quelle
11

[Bearbeiten]

In der JavaScript-Community gibt es keine solche Konvention. Das ist nur schlechter Code.

[Original "Antwort" unten]

Ich bevorzuge die folgende Syntax, wenn ich ein Projekt verlasse:

%Vor%

Das } else { -Segment wird hoffentlich durch Texteditoren vom Bildschirm verdeckt, so dass der Code genau das Gegenteil von dem darstellt, was er zu sein scheint. Auf diese Weise kann ich sicherstellen, dass das verbleibende Entwicklerteam meinen Namen verflucht und mich niemals für zukünftige Entwicklung oder Unterstützung in Betracht ziehen würde. = D

    
maerics 24.08.2011 18:17
quelle
4

Ich verstehe nicht, warum der JavaScript-Code in dieser Hinsicht anders sein sollte als jede C-Kultursprache. Ich habe dieses Idiom noch nie zuvor gesehen, und ich mag es wirklich nicht. Ich muss das Ding zweimal mental analysieren, um sicherzugehen, dass ich es verstanden habe.

Das einzige Analog, das mir einfällt, ist ein leerer Standard in einer switch-Anweisung, mit einem ausgiebigen Kommentar, um zu sagen: "Ich habe darüber nachgedacht und es ist in Ordnung."

    
djna 24.08.2011 17:43
quelle
3

Ich habe es schon einmal gemacht.

Dies ist der Fall, wenn ich später einige Debug-Anweisungen hinzufügen möchte.

Ja sicher, er hätte es tun können

%Vor%

Aber ist das nicht genau dasselbe?

Zurück zu dem Code, den Sie gesehen haben.

Was der Programmierer wahrscheinlich getan hat, ist:

%Vor%

Später, als er Debug-Informationen in den ersten Teil einfügen wollte, würde er das tun Die Logik funktioniert immer noch und ist im geringsten nicht fehlerhaft. (meiner Meinung nach)

    
Neal 24.08.2011 17:50
quelle
2

Es ist aus zwei Gründen verwirrend. Die Syntax ist verwirrend, weil er foo == bar auswertet, nur um ... nichts zu tun? Es scheint unnötig, nicht die von Ihnen vorgeschlagene Syntax zu verwenden. Visuell ist es auch verwirrend, da sich der leere Block und die if-Auswertung in einer Zeile befinden. Wenn ich diesen Code später lese, könnte ich die Dinge beschönigen und annehmen, dass die Anweisung als

gelesen wird %Vor%

Welches ist das genaue Gegenteil der Absicht des Codes. Eine mögliche Erklärung dafür ist, dass der Programmierer zurückgehen und Code für foo == bar implementieren wollte, aber entweder nicht oder nicht vergaß.

Meine Stimme ist für Irre.

    
user470714 24.08.2011 17:50
quelle
1

Es gibt keinen guten Grund, das zu tun.

Beachten Sie jedoch, dass es bei Schleifen manchmal Fälle gibt, in denen ein leerer Block akzeptabel ist:

%Vor%     
Jared Ng 24.08.2011 17:47
quelle
0

Ich neige dazu, verkettete if wie folgt zu schreiben:

%Vor%

Statt:

%Vor%

Dies macht den Code IMO besser.

Macht es Sinn?

    
Dmitry Lukyanov 05.10.2012 15:44
quelle

Tags und Links