1. Grundlegendes Format

Einrückung

Es wird empfohlen, 4 Leerzeichen pro Ebene zu verwenden. Sie können im Editor tab = 4 Leerzeichen für die automatische Konvertierung einstellen.

Semikolons

Semikolons nicht weglassen, um ASI-Fehler (Automatic Semicolon Insertion) zu vermeiden.

Linienbreite

Jede Codezeile sollte 80 Zeichen nicht überschreiten. Wenn sie zu lang ist, verwenden Sie Operatoren, um die Zeile manuell umzubrechen.

Zeilenumbrüche

Der Operator sollte am Ende der vorherigen Zeile stehen, und die nächste Zeile sollte um 2 Ebenen eingerückt werden. Wenn es sich um eine Zuweisungsanweisung handelt, sollte sie außerdem am Teil nach dem Gleichheitszeichen ausgerichtet werden.

Leerzeilen

Leerzeilen sollten verwendet werden, um Funktionsdeklarationen von Funktionsdeklarationen, Variablendeklarationen von Funktionsdeklarationen und logische Blöcke innerhalb einer Funktion zu trennen.

Der Autor Nicholas schlägt außerdem vor, am Anfang von Kontrollflussblöcken eine Leerzeile zu lassen, aber das angegebene Beispiel ist nicht sehr klar.

Benennung

  • Variablennamen/Funktionsnamen: Camel-Regel, das erste Wort beginnt mit einem Kleinbuchstaben, nachfolgende Wörter beginnen mit Großbuchstaben, und der Rest ist kleingeschrieben.
  • Konstantennamen: C-Stil, alles in Großbuchstaben, Wörter durch Unterstriche getrennt.
  • Konstruktoren: Pascal-Regel, alle Wörter beginnen mit Großbuchstaben, und der Rest ist kleingeschrieben.

Literale

  • Strings: in doppelte Anführungszeichen gesetzt, verwenden Sie für Zeilenumbrüche den [+]-Operator, verwenden Sie nicht das \-Escape-Zeichen.
  • Zahlen: Die Teile vor und nach dem Dezimalpunkt nicht weglassen und nicht die Oktalform verwenden.
  • Null: Behandeln Sie null nur als Platzhalter für Object. Verwenden Sie es nicht zum Prüfen von Parametern und nicht zum Prüfen nicht initialisierter Variablen.
  • Undefined: Alle Objekte sollten mit null initialisiert werden, um zwischen undefined und nicht initialisiert zu unterscheiden.
  • Objektliterale/Array-Literale: Verwenden Sie nicht den Konstruktoransatz, um Objekte und Arrays zu deklarieren.

2. Kommentare

P.S. Im Buch gibt es eine sehr klassische Erklärung:

Angemessen geschriebene Kommentare helfen, die Geschichte des Codes zu erzählen, sodass andere Entwickler an einer Stelle der Geschichte einsteigen können, ohne den Anfang hören zu müssen.

Einzeilige Kommentare

  • Am Zeilenende: Mit 1 Ebene Einrückung vom Code trennen, und nach // sollte ein Leerzeichen stehen.
  • In einer eigenen Zeile: Wird verwendet, um den Code darunter zu kommentieren, und sollte dieselbe Einrückung wie der kommentierte Code beibehalten.
  • Am Zeilenanfang: Wird verwendet, um mehrere Codezeilen zu kommentieren.

Mehrzeilige Kommentare

Wird verwendet, um große Kommentarblöcke zu umschließen. Der Eclipse-Stil wird empfohlen, zum Beispiel

/*
 * comment line1
 * comment line2
 */

Hinweis:

  • Lassen Sie oberhalb von mehrzeiligen Kommentaren eine Leerzeile.
  • Lassen Sie ein Leerzeichen nach dem * Sternchen.
  • Mehrzeilige Kommentare sollten mindestens drei Zeilen haben (da nach der ersten und letzten Zeile keine Kommentare hinzugefügt werden).

Wo Kommentare hinzugefügt werden

  • Code, der nicht selbsterklärend ist
  • Absichtlich, sieht aber so aus, als hätte er Fehler
  • Browserspezifische Hacks

Dokumentationskommentare

Kommentare sollten zu jeder Funktion hinzugefügt werden, einschließlich Beschreibung, Parameter, Rückgabewert, geworfene Fehler usw., zum Beispiel der empfohlene Eclipse-Stil:

/**
 * 添加指定元素到默认数组
 *
 * @method add
 * @param {Number} 将要添加的元素
 * @return {Boolean} 添加成功/失败
 * @throw {TypeError} 参数类型不匹配
 */
function add(item){
    if(typeof item === "number"){
        arr.push(item)
    }
    else{
        throw new TypeError();
    }
}

3. Anweisungen und Ausdrücke

Ausrichtung geschweifter Klammern

Der End-of-Line-Stil wird empfohlen, nicht der Next-Line-Stil.

Abstände bei Blockanweisungen

Es sollte ein Leerzeichen vor und nach den Klammern nach if stehen, zum Beispiel:

if (expr) {
    code
}

switch-Anweisung

  • Einrückung: case wird an switch ausgerichtet, break wird um 1 Ebene eingerückt.
  • Case-Fall-through: Verwenden Sie eine Leerzeile oder den Kommentar //falls through, um anzuzeigen, dass der Fall-through beabsichtigt ist.
  • default: Behalten Sie default bei oder verwenden Sie den Kommentar //no default, um anzuzeigen, dass es kein default gibt.

P.S.: Douglas, der Autor von "JavaScript: The Good Parts", ist der Ansicht, dass Case-Fall-through nicht verwendet werden sollte (er nennt es "Hühnerrippen" - etwas von geringem Wert), während Nicholas es für in Ordnung hält, solange es durch eine Leerzeile oder einen Kommentar erklärt wird.

with-Anweisung

Nicht verwenden.

for-Schleife

Alle Variablen sollten am Anfang des Funktionskörpers deklariert werden, einschließlich der im Initialisierungsteil der for-Schleife verwendeten Variablen, um Fehler durch Hoisting zu vermeiden (das globale Variablen verschatten kann).

for-in-Schleife

Verwenden Sie es nicht, um über Arrays zu iterieren. Denken Sie bei der Verwendung daran, den hasOwnProperty-Filter hinzuzufügen. Wenn Sie absichtlich über Prototype-Eigenschaften iterieren, sollten Sie dies mit einem Kommentar erklären.

4. Variablen, Funktionen, Operatoren

Variablendeklarationen

Funktionskörper = Variablendeklarationen + Funktionsdeklarationen + Logikanweisungen. Trennen Sie die einzelnen Teile durch Leerzeilen.

Funktionsdeklarationen

Vor der Verwendung deklarieren. Platzieren Sie niemals Funktionsdeklarationen in if-Zweigen, weil Browser sie unterschiedlich verstehen und ES keinen Standard dafür bereitstellt.

Funktionsaufrufe

Fügen Sie keine Leerzeichen vor oder nach den Klammern hinzu, um Verwechslungen mit Blockanweisungen zu vermeiden.

Sofort aufgerufene anonyme Funktionen

Umschließen Sie sofort aufgerufene anonyme Funktionen mit Klammern, um Verwechslungen mit anonymen Funktionsdeklarationen zu vermeiden.

Strikter Modus

Aktivieren Sie den Strict Mode nicht im globalen Gültigkeitsbereich. Aktivieren Sie ihn nur innerhalb von Funktionen. Um ihn für mehrere Funktionen zu aktivieren, können Sie eine sofort aufgerufene anonyme Funktion verwenden, um den Gültigkeitsbereich des Strict Mode einzuschränken.

Gleichheitsprüfung

Verwenden Sie nur === und !==.

eval

Verwenden Sie nicht eval() und new Function(). Verwenden Sie anonyme Funktionen, um setTimeout() und setInterval() zu optimieren.

Primitive Wrapper-Typen

Verwenden Sie nicht new Boolean(), new String(), new Number().

Referenzen

  • 《Maintainable JavaScript》
  • "JavaScript: Die guten Teile"

Von: http://www.codeceo.com/article/javascript-code-style-guide.html