Namenskonventionen für Javascript


12

Ich habe einen Java-Hintergrund und bin neu in JavaScript. Ich habe viele JavaScript-Methoden bemerkt, die einzelne Zeichen als Parameternamen verwenden, wie im folgenden Beispiel.

doSomething(a,b,c)

Es gefällt mir nicht, aber ein anderer JavaScript-Entwickler hat mich davon überzeugt, dass dies geschieht, um die Dateigröße zu reduzieren, und dass JavaScript-Dateien in den Browser übertragen werden müssen.

Dann habe ich mich mit einem anderen Entwickler unterhalten. Er hat mir gezeigt, wie Firefox Variablennamen abschneidet, um die Seite schneller zu laden. Ist dies eine Standardpraxis für Webbrowser?

Was sind die empfohlenen Namenskonvertierungen, die beim Programmieren in JavaScript befolgt werden sollten? Ist die Länge des Bezeichners von Bedeutung und wenn ja, in welchem ​​Umfang?


13
Ich bezweifle sehr, dass Browser Variablennamen ändern. In Gegenwart von evalist es nicht sicher (ja, es evalist schrecklich, aber es ist Teil des Standards, und Sie werfen keine Standardkompilierung für eine Optimierung weg) und es hilft nicht im geringsten, den Datenverkehr zu reduzieren - Sie würden es immer noch Sende die vollständige Datei.

4
Ich habe oft Entwickler gesehen, die über die Vorteile kurzer Variablennamen gestritten haben. Hör ihnen nicht zu. Dies ist fast immer eine Ausrede für "Ich bin zu faul, um einen guten Namen zu erfinden" oder "Ich bin zu faul, um so viele Zeichen einzugeben".
Doc Brown

@ DocBrown: Auch mir hat es nicht gefallen. Da ich kein Experte für JavaScript bin, wollte ich die Best Practice kennen.
ManuPK

Sprechen Sie am Ende des Tages über zusätzliche Daten im Wert von vielleicht 50-100 KB, um aussagekräftige Methodennamen zu verwenden? Wenn 100 KB ein Geschwindigkeitsproblem verursachen, lohnt es sich nicht, es zu lösen, da dieses Problem bei einem nicht ausreichend großen Pool von Benutzern auftritt.
Ramhound

Antworten:


26

Sie werden feststellen, dass die Entwickler selbst keine kurzen Variablennamen verwenden. Während der Entwicklung verwenden sie aussagekräftige und detaillierte Variablennamen.

Während des Build- / Release-Prozesses wird der von ihnen geschriebene Code durch einen Minifier / Obfuscator geleitet, um die Größe der Datei zu minimieren. Dies ist eine bewährte Methode , um eine Website zu beschleunigen. Dies ist ein optionaler Schritt, wenn Sie so viel Wert auf Leistung legen. Die meisten kleinen Websites tun dies nicht.

Sie als Entwickler sollten sich nicht um den Minimierungs- / Verschleierungsprozess kümmern . Schreiben Sie Ihren Code so, dass er lesbar, aussagekräftig, gut dokumentiert und gut strukturiert ist. Dann , wenn Sie so viel über die Leistung kümmern (optional, nicht vergessen!), Einen minifier / obfuscator in Ihren Freigabeprozess einführen , den Code minize (entfernen Leerraum, neue Linien, Kommentare usw.) und es zu verschleiern (zB shorten Variable Namen). Einen guten Artikel, der Obfuscation vs. Minification erklärt, finden Sie hier .

Darüber hinaus schneidet Desktop FireFox den Zeitraum für Variablennamen nicht ab . Das Abschneiden von Variablennamen dient dazu, den Seiten-Download zu beschleunigen. Wenn FireFox die Datei erhält, wurde sie bereits heruntergeladen, sodass dies nicht erforderlich ist. Dein Freund kann ein Plugin ausführen, das dies tut. In diesem Fall bitten Sie ihn, es zu deinstallieren, da es unbrauchbar ist.

Zur Vervollständigung, einige haben (mobile) Browser die Option Mitte-Mann - Server zu verwenden, die Intercept die Antworten von Ressourcen , die Sie angefordert, und komprimieren sie für Sie (das könnte die Verkleinerungs von JavaScript - Dateien enthalten). Beachten Sie, dass die Komprimierung auf dem Server erfolgt (dh bevor Sie die Seite heruntergeladen haben). Dies ist der potenzielle Vorteil des Herunterladens einer kleineren Datei anstelle des Browsers, sobald Sie die Datei bereits heruntergeladen haben (wie in der Frage vorgeschlagen). Zu diesen mobilen Browsern gehören Opera Mini und neuere Versionen von Google Chrome (zumindest unter iOS; Android nicht sicher). Weitere Informationen finden Sie hier .


11

Nein, nicht alle Browser kürzen das JavaScript automatisch, um die Leistung zu verbessern.

Im Falle von JavaScript sollten Sie jedoch die Lesbarkeit / Wartbarkeit des Codes nicht einschränken, um die Verarbeitungsgeschwindigkeit oder die Sicherheit zu verbessern, da es Tools namens Obfuscators und andere Tools namens Shinkers (oder Kompressoren) gibt, die für diesen Zweck entwickelt wurden.

Denken Sie daran, nicht voroptimieren. Wenn Ihre Seite schnell genug geladen wird und Sie keinen überempfindlichen Inhalt in Ihrem JavaScript haben, sorgen Sie sich nicht darum. Benennen Sie Ihre Variablen mit aussagekräftigen Namen. Die Lesbarkeit von Code ist für die Wartbarkeit von großer Bedeutung und sollte, wenn überhaupt, selten geopfert werden.

Wenn Sie auf einige gute JavaScript-Kodierungskonventionen verweisen möchten, empfehle ich diese .



1

Ich habe sehr lange in JavaScript gearbeitet.

Wir hatten einen Namensstandard, bei dem Sie die ungarische Notation für alle Variablen verwenden mussten.

Es schien in Ordnung zu funktionieren. Ich weiß, dass es Fälle gibt, die dagegen sprechen, aber es hat bei uns gut funktioniert. Vor allem, wenn Sie massive JavaScript-Dateien haben, in denen Sie Dinge finden müssen.

Ich würde davor warnen, vorzeitig zu optimieren. Es ist sehr wahrscheinlich, dass Sie einen chaotischen Code erhalten, der überhaupt nicht viel schneller läuft.


5
Ungarische Notation? Das ist alte Schule. Die ungarische Notation ist ein altes Entwicklungsrelikt und wird mit der Zeit nicht mehr empfohlen.
Smokefoot am

2
Ich neige dazu, es ein wenig zu benutzen, aber nur für Werte, die von jquery umschlossen werden, beginne ich mit einem $. Das Problem mit der ungarischen Notation ist, dass die Leute pflegten, Sie in Bezug auf "int" vs "String" und nicht in Bezug auf die Sematik eines Programms zu schreiben
Zachary K

"Vor allem, wenn Sie massive JavaScript-Dateien haben, in denen Sie Dinge finden müssen." -- Ich höre dich. Aber die ungarische Schreibweise ist nur ein Heftpflaster ... es wird auf lange Sicht nicht helfen, es wird nur verwirren, wenn Sie die Art von etwas ändern müssen, aber nicht die Zeit haben, alle variablen Präfixe zu ändern. Durch die Automatisierung all dessen wird GWT zu einer eigenen IMO.
Funkybro

1
Ich kaufe nicht unbedingt, indem ich die Notation benutze, um die lose getippten Aspekte der Sprache zu "brechen". Sicher, Sie müssten den Namen ändern, wenn Sie den Typ ändern, aber das wäre trotzdem eine gute Sache, damit Sie verfolgen können , was Sie tun. Ich weiß, dass es Aspekte gibt, die hässlich sind. Wenn Sie jedoch jemals in einem GROSSEN Projekt (ich spreche von Hunderttausenden von Codezeilen) in einer lose geschriebenen Sprache gearbeitet haben, können Sie sich in bestimmten Fällen schneller zurechtfinden. Wenn man sagt, dass es veraltet ist usw., wird das Kernproblem, das das OP zu lösen versucht hat, nicht wirklich angesprochen.
Alan Delimon

1
Die ungarische Notation ist eines der Dinge, die die Leute sofort ablehnen, ohne wirklich zu verstehen, warum. Es wurde herausgefunden, dass es sich um dieselbe Kategorie handelt, gotoin der die Leute das Mantra „Benutze nicht gehe ... benutze nicht gehe ...“ sinnlos wiederholen . Die Realität ist, dass es nur ein Werkzeug in Ihrem Toolkit ist. Wie jedes Werkzeug hat es Situationen, in denen es nützlich ist und Situationen, in denen es nicht so nützlich (oder sogar schädlich) ist. Es ist, als hätte jemand eine schlechte Erfahrung damit gemacht, ein Stück Holz mit einem Hammer zu sägen und dann zu proklamieren: "Benutze niemals Hämmer, säge viel besser!" . Umfassende Verallgemeinerungen sind immer falsch
MattDavey

1

Die Länge des Bezeichners spielt keine Rolle. Wie bereits von anderen erwähnt, kann Minification in der Produktion verwendet werden, um die Download-Zeit für Skripte zu verkürzen. In der Tat sollte eine akzeptable Kodierungs- / Benennungskonvention befolgt werden, insbesondere weil JavaScript eine eigenartige Sprache ist und so lange JavaScript als eine Sache vernachlässigt wurde, um die Arbeit zu erledigen. Wenn Sie nach einem Ort für Namenskonventionen suchen, ist Google JavaScript Style Guide ein guter Ort. Es schlägt vor,

  • functionNamesLikeThis, zB getCashbackData () {}
  • variableNamesLikeThis, zB var alertInterval = 10;
  • ClassNamesLikeThis, zB var CustomerOrder = {getOrderLines: function () {}}
  • EnumNamesLikeThis, zB var ColorOfChoice = {White: "#FFFFFF"}
  • methodNamesLikeThis, zB var CustomerOrder = {getOrderLine: function () {}}
  • SYMBOLIC_CONSTANTS_LIKE_THIS, z. B. var EPOCH_UNIX = "01011970"

Haben Sie mehr als ein paar Links hinzuzufügen? Ich meine, Sie erklären nicht einmal, wer Douglas Crockford ist.
Ramhound

0

Verärgert über die "Clean Code Developer" -Philosophie (und angesichts der Tatsache, dass die Minimierung der Größe Ihrer Variablennamen keinen Einfluss auf die Leistung hat, kann ich nur raten:

  1. Finden Sie die beste IDE für Ihre persönlichen Entwicklungsbedürfnisse, die eine anständige Autovervollständigungs- und Intellisense-Funktion hat, wie Aptana, Netbeans, Eclipse (alles kostenlos) oder eines der zahlreichen kommerziellen Produkte (wenn ich ein kostenloses Spiel hätte, würde ich es tun) einen Blick auf die JetBrains-Produkte werfen
  2. Schreiben Sie Ihren Code so, dass Kommentare überflüssig werden. Das heißt, anstatt zu schreiben

    getXy(e) { return [e.pageX, e.pageY ] }

    was wirklich alles bedeuten könnte (besonders in einer verrückten, lose geschriebenen Sprache wie js;), lässt du den Code sich selbst ausdrücken

    getPageCoordinatesFromEvent(event) { 
        return [event.pageX, event.pageY ];
    }

    In einer guten IDE würden Sie in der Regel niemals einen Variablennamen eingeben, der zweimal so lang ist - Sekunden, wenn Sie ein paar Buchstaben eingeben und in der automatischen Vervollständigung einfach die Eingabetaste drücken. Wenn Sie darauf bestehen, jedes Zeichen selbst einzugeben, werden Sie von einer guten IDE trotzdem auf einen Tippfehler aufmerksam. Dies ist nur ein sehr oberflächliches Beispiel, daher empfehle ich Ihnen dringend (nicht als Form der Kritik, sondern als ehrliche Empfehlung)

  3. Holen Sie sich die Bücher "Clean Code" von Robert C. Martin und "Pragmatic Programmer" von Hunt / Thomas und stellen Sie sich diese Fragen nie wieder - Sie werden viel zu beschäftigt sein, an einem Continuous Integration Server zu arbeiten, um den langweiligen Test zu automatisieren -, & Teile des Entwicklungsprozesses (einschließlich des Minimierens) aufbauen und sich auf den unterhaltsamen Teil konzentrieren, klar verständlichen Code schreiben, der großartige Dinge leistet!

PS Wenn Sie mit der Entwicklung von modernstem Javascript-Code auf dem Laufenden bleiben möchten, werfen Sie gleich nach oder zusammen mit den oben genannten Informationen einen Blick auf das Buch von John "Mr. jQuery" Resig über "Pro Javascript Techniques".

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.