Dollarzeichen Blues: Javascript und PHP


18

Ich bin mit der Programmierung von C ++ und Java aufgewachsen, wo alles sicher und schön war. Compiler haben dafür gesorgt, dass ich in Schach gehalten werde, falls ich jemals abwandere. Natürlich haben alle im College ein bisschen Perl gemacht, aber ich habe nicht eingeatmet. Kinder in diesen Tagen sind alle über PHP im Backend und Javascript auf der Vorderseite. Beim Versuch, hip zu sein, mache ich dasselbe (für die Webentwicklung). Das Problem, auf das ich laufend stoße, ist, dass ich versehentlich ein Dollarzeichen ($) vor reguläre Variablen in Javascript setze und natürlich niemand etwas sagt, da dies die legale Syntax ist, die häufig für jQuery-Objekte verwendet wird.

Gibt es irgendwelche Debugging-Tools oder Entwickler-Tricks, um diese Dollarzeichen-Verwirrung aufzufangen? Machen Sie oft den gleichen Fehler und wie gehen Sie emotional damit um? Chrome-Entwickler-Tools sehen nicht immer, dass dies ein Javascript-Fehler ist. Ich benutze PhpStorm und Emacs für die Entwicklung, aber diese fangen meine Dummheit nicht auf, obwohl ich vermute, dass Emacs es tut, aber mich aus Trotz nicht darüber zu informieren.

Wenn Sie denken, dass diese Frage lächerlich ist, denke ich, dass Sie Recht haben. Aber wir leben in einer Welt, in der eine Variable ein Dollarzeichen vor sich hat. In einer solchen Welt ist nichts lächerlich.


2
Emotional? Schlagen Sie einfach auf Ihre Kollegen ein.
Chris Schiffhauer

@ChrisSchiffhauer Leider arbeite ich im akademischen Bereich, wo völlige Isolation gefragt ist. Ich müsste ein Treffen mit einem Kollegen vereinbaren, um durchzuhalten, und das würde die Spontaneität des Ganzen aufheben.
Alan Turing

Antworten:


11

Es ist nichts Falsches an der Verwendung $in Variablen. Ich würde es nicht absichtlich für jede Variable tun, aber es ist immer noch eine gültige Syntax. jQuery ist eines der Beispiele, in denen $als Variablenname verwendet wird. Das ist auch der Grund, warum "Chrome-Entwickler-Tools sehen, dass dies nicht immer ein Javascript-Fehler ist" , weil es überhaupt keinen Fehler gibt.

Wenn Sie Angst haben, Code wie folgt zu schreiben:

var demo = function demo() {
    var a = 123;
    ...
    $a = 456; // A new variable is created in global scope.
}

Dann müssen Sie einen Style Checker wie jsLint , jsHint oder Google Closure Linter verwenden . Welcher von denen? Es liegt an Ihnen, eine Wahl zu treffen. Um Ihnen dabei zu helfen, finden Sie hier einige Hinweise:

Stil

Google Closure Linter folgt dem Google JavaScript Style Guide , der bekanntermaßen geschickt erstellt wurde. Es ist eine gute Idee, einen bekannten Stil für JavaScript oder eine der sechs anderen Sprachen zu verwenden : Wenn Sie Ihren Code freigeben oder einen neuen Entwickler einstellen, sind diese wahrscheinlich bereits mit diesem Stil vertraut.

Viele Entwickler sind auch mit dem Stil von Douglas Crockford vertraut. Dieser Stil wird in JavaScript ausführlich erklärt : The Good Parts , ein Buch, das sich für jeden lohnt, der mit JavaScript arbeitet.

Was jsHint angeht, kann ich nicht wirklich feststellen, welche Konventionen verwendet werden, und die Website selbst scheint es zu vermeiden, über dieses Thema zu sprechen. Vielleicht habe ich etwas verpasst.

Unterstützung durch IDEs

Sowohl jsLint als auch jsHint werden von PhpStorm unterstützt. Dies ist auch bei Google Closure Linter der Fall .

Umgebung

Google Closure Linter gehört zu einer Reihe von Tools . Wenn Sie bereits Google Closure Compiler oder Google Closure Library verwenden , sollten Sie Closure Linter vor anderen Tools auswählen.

Strenge

Es ist bekannt, dass jsLint streng ist. jsHint ist freizügiger, was nicht immer gut ist. Einer der Gründe, jsLint für jsHint zu forken, wird beispielsweise in einem Artikel erläutert, der fehlerhaften Code zeigt, der einen Fehler in jsLint, aber nicht in jsHint erzeugt:

/*global jQuery */

// Example taken from jQuery 1.4.2 source
jQuery.extend({
    /* ... */

    isEmptyObject: function( obj ) {
        for ( var name in obj ) {
            return false;
        }
        return true;
    }

    /* ... */
});

Der Code ist schlecht, weil es so aussieht, als ob JavaScript einen Blockbereich hat, während dies nicht der Fall ist. Siehe JavaScript: Die guten Teile, S. 32. 102, Anhang A: Schreckliche Teile, Geltungsbereich. Mit anderen Worten, wenn wir den Code betrachten, ohne die Sprache zu kennen, ist zu erwarten name, dass er außerhalb der Schleife nicht sichtbar ist, während er sichtbar bleibt.

Was Google Closure Linter angeht, glaube ich, dass es irgendwo zwischen jsLint und jsHint liegt, aber ich habe nicht genug Informationen, um das zu unterstützen.

Fazit

Ich würde jsHint vermeiden: Es ist zu nachgiebig, was bedeutet, dass es keine potenziellen Fehler findet, die die anderen Linters erkennen würden. Der verwendete Styleguide ist schwer zu finden.

Bei jsLint und Google Closure Linter ist die Wahl nicht offensichtlich. Beide sind von Experten verfasst, beide folgen strengen, gut beschriebenen Styleguides, die bereits von Tausenden von Entwicklern befolgt wurden. Verwenden Sie beide für einige Zeit, und wählen Sie dann eine aus, die für Sie praktischer ist.


+1: Schlag mich drauf. Ich habe angefangen, meine Semikolons wegzulassen, als ich die Sprache von F # auf C #
umgestellt habe. Darf

2
Nur ein Hinweis, da OP PhpStorm verwendet: Sowohl JSLint als auch JSHint sind integriert und können so eingerichtet werden, dass sie ihren Code bei Bedarf oder sogar im laufenden Betrieb überprüfen können. Fehler wie der in Ihrem Beispiel sind recht einfach zu erkennen.
Yannis
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.