Heim >Web-Frontend >js-Tutorial >Dojo Javascript-Programmierungsstandards Standardisieren Sie Ihr eigenes JavaScript-Schreiben_Grundkenntnisse

Dojo Javascript-Programmierungsstandards Standardisieren Sie Ihr eigenes JavaScript-Schreiben_Grundkenntnisse

WBOY
WBOYOriginal
2016-05-16 16:32:491285Durchsuche

Vorwort

Die Vorteile guter JavaScript-Schreibgewohnheiten liegen auf der Hand. Heute empfiehlt Bingo jedem die Javascript-Programmierspezifikation. Es wird empfohlen, dass jeder anhand dieser Spezifikation lernen kann. Vielen Dank an i.feelinglucky für die Übersetzung.

Vorwort

Jeder Verstoß gegen diesen Leitfaden ist zulässig, wenn er die Lesbarkeit verbessert.

Der gesamte Code sollte für andere leicht lesbar sein.

Schnelle Lesereferenz

Kern-API Bitte verwenden Sie den folgenden Stil:

结构 规则 注释
模块 小写 不要使用多重语义(Never multiple words)
骆驼
公有方法 混合 其他的外部调用也可以使用 lower_case(),这样的风格
公有变量 混合
常量 骆驼 或 大写
Struktur

Regeln

Kommentare

结构 规则
私有方法 混合,例子:_mixedCase
私有变量 混合,例子:_mixedCase
方法(method)参数 混合,例子:_mixedCase, mixedCase
本地(local)变量 混合,例子:_mixedCase, mixedCase

Modul Kleinbuchstaben Niemals mehrere Wörter Klasse Kamel Öffentliche Methoden Mischen Andere externe Aufrufe können auch Lower_case() in diesem Stil verwenden Öffentliche Variablen Mischen Konstante Kamel oder Hauptstadt Obwohl Folgendes nicht notwendig ist, wird es empfohlen: _mixedCase
Private Variablen Gemischt, Beispiel: _mixedCase
Methodenparameter Gemischt, Beispiel: _mixedCase, MixedCase
Lokale (lokale) Variablen Gemischt, Beispiel: _mixedCase, MixedCase


Namenskonvention

1. Variablennamen müssen aus Kleinbuchstaben bestehen.
2. Bei der Klassenbenennung werden Kamel-Benennungsregeln verwendet, zum Beispiel:

Konto, EventHandler

3. Konstanten müssen vor dem Objekt (der Klasse) oder der Aufzählungsvariablen deklariert werden. Aufzählungsvariablen müssen mit praktischer Bedeutung benannt werden und ihre Mitglieder müssen Kamel-Benennungsregeln verwenden oder Großbuchstaben verwenden:

Code kopieren Der Code lautet wie folgt:

var NodeTypes = {
Element: 1,
DOKUMENT: 2
}

4. Abgekürzte Wörter können keine Großbuchstaben als Variablennamen verwenden:

getInnerHtml(), getXml(), XmlDocument
5. Der Methodenbefehl muss ein Verb oder eine Verbphrase sein:

obj.getSomeValue()
6. Öffentliche Klassen müssen mit gemischten Namen (mixedCase) benannt werden.
7. CSS-Variablen müssen mit denselben öffentlichen Klassenvariablen benannt werden, denen sie entsprechen.
8. Variablenattributmitglieder privater Klassen müssen mit einem gemischten Namen (mixedCase) benannt werden und ein Unterstrich (_) vorangestellt werden. Zum Beispiel:

Code kopieren Der Code lautet wie folgt:

var MyClass = function(){
var _buffer;
this.doSomething = function(){
};
}

9. Wenn die Variable auf privat eingestellt ist, muss ihr ein Unterstrich vorangestellt werden.

this._somePrivateVariable = Statement;

10. Universelle Variablen müssen Typnamen verwenden, die mit ihren Namen übereinstimmen:

setTopic(topic) // Die Variable topic ist eine Variable vom Typ Topic
11. Alle Variablennamen müssen englische Namen verwenden.
12. Wenn die Variable einen größeren Gültigkeitsbereich hat (großer Gültigkeitsbereich), muss eine globale Variable verwendet werden. In diesem Fall kann sie als Mitglied einer Klasse entworfen werden. Wenn der Gültigkeitsbereich hingegen klein ist oder die Variable privat ist, verwenden Sie eine prägnante Wortbenennung.
13. Wenn eine Variable einen eigenen impliziten Rückgabewert hat, vermeiden Sie die Verwendung ähnlicher Methoden:

getHandler(); // Vermeiden Sie die Verwendung von getEventHandler()

14. Öffentliche Variablen müssen ihre eigenen Attribute klar ausdrücken, um mehrdeutige Wortbedeutungen zu vermeiden, zum Beispiel:

MouseEventHandler
, nicht MseEvtHdlr.
Bitte beachten Sie diese Regel noch einmal, die Vorteile liegen auf der Hand. Es kann die durch den Ausdruck definierte Bedeutung klar ausdrücken. Zum Beispiel:

dojo.events.mouse.Handler // statt dojo.events.mouse.MouseEventHandler

15. Eine Klasse/Konstruktor kann durch Erweitern des Namens ihrer Basisklasse benannt werden, sodass der Name ihrer Basisklasse korrekt und schnell gefunden werden kann:
EventHandler
UIEventHandler
MouseEventHandler
Eine Basisklasse kann ihren Namen unter der Voraussetzung verkürzen, dass ihre Eigenschaften klar beschrieben werden:
​MouseEventHandler im Gegensatz zu MouseUIEventHandler.

Spezielle Namenskonvention

Der Begriff „get/set“ sollte nicht mit einem Feld verknüpft werden, es sei denn, es ist als private Variable definiert.
Variablennamen, denen „is“ vorangestellt ist, sollten boolesche Werte sein und können gleichermaßen „has“, „can“ oder „should“ sein.
Der Begriff „berechnen“ als Variablenname sollte sich auf eine berechnete Variable beziehen.
Der Begriff „finden“ als Variablenname bezieht sich auf die Variable, nach der die Suche abgeschlossen wurde.
Der Begriff „initialisieren“ oder „init“ als Variablenname sollte sich auf eine Klasse oder einen anderen Variablentyp beziehen, der instanziiert (initialisiert) wurde.
UI-Steuervariablen (User Interface) sollten den Steuertyp nach dem Namen haben, zum Beispiel: leftComboBox, TopScrollPane.
Zur Benennung von Sammlungen MÜSSEN Pluralformen verwendet werden.
Variablennamen, die mit „num“ oder „count“ beginnen, sind herkömmlicherweise Zahlen (Objekte).
Es wird empfohlen, für wiederholte Variablen Variablen mit Namen wie „i“, „j“, „k“ (usw.) zu verwenden.
Ergänzende Begriffe müssen ergänzende Wörter verwenden, wie zum Beispiel: abrufen/setzen, hinzufügen/entfernen, erstellen/zerstören, starten/stoppen, einfügen/löschen, beginnen/enden usw.
Verwenden Sie Abkürzungen für Namen, die abgekürzt werden können.
Vermeiden Sie mehrdeutige boolesche Variablennamen, zum Beispiel:
isNotError, isNotFound ist illegal
Es wird empfohlen, für Fehlerklassen nach dem Variablennamen „Exception“ oder „Error“ hinzuzufügen.
Wenn die Methode eine Klasse zurückgibt, sollte der Name angeben, was sie zurückgibt; wenn es sich um eine Prozedur handelt, sollte er angeben, was sie tut.

Datei

Bitte verwenden Sie 4 Leerzeichen-Tabstopps zum Einrücken.
Wenn Ihr Editor Datei-Tags unterstützt, fügen Sie bitte die folgende Zeile hinzu, um die Lesbarkeit unseres Codes zu erleichtern:

// vim:ts=4:noet:tw=0:
Übersetzungshinweis: Ausländer verwenden den VIM-Editor häufiger. Sie können diesem Artikel folgen.

Code-Faltung muss vollständig und logisch aussehen:

Code kopieren Der Code lautet wie folgt:

var someExpression = Expression1
Ausdruck2
Ausdruck3;

var o = someObject.get(
Ausdruck1,
Ausdruck2,
Ausdruck3
);

Hinweis: Die Einrückung von Ausdrücken und Variablendeklarationen sollte konsistent sein.
Hinweis: Funktionsparameter sollten explizit eingerückt werden und die Einrückungsregeln sollten mit denen anderer Blöcke konsistent sein.

Variable

  1. Variablen müssen deklariert und initialisiert werden, bevor sie verwendet werden können, auch wenn sie vom Typ NULL sind.
  2. Variablen dürfen nicht mehrdeutig sein.
  3. Verwandte Variablensätze sollten im selben Codeblock platziert werden, und nicht verwandte Variablensätze sollten nicht im selben Codeblock platziert werden.
  4. Variablen sollten versuchen, die Mindestlebensdauer einzuhalten.
  5. Spezifikationen für Schleifen-/Wiederholungsvariablen:
    1. Wenn Sie nur einen Schleifenkontrollblock haben, müssen Sie eine FOR-Schleife verwenden.
    2. Schleifenvariablen sollten vor Beginn der Schleife initialisiert werden. Wenn Sie eine FOR-Schleife verwenden, verwenden Sie die FOR-Anweisung, um die Schleifenvariablen zu initialisieren.
    3. „do … while“-Anweisungen sind zulässig.
    4. „break“- und „continue“-Anweisungen sind weiterhin zulässig (aber bitte beachten Sie).
  6. Bedingter Ausdruck
    1. Komplexe bedingte Ausdrücke sollten so weit wie möglich vermieden werden und bei Bedarf können temporäre boolesche Variablen verwendet werden.
    2. Der Nominalfall SOLLTE in den „if“-Teil und die Ausnahme in den „else“-Teil einer „if“-Anweisung eingefügt werden.
    3. Blöcke in bedingten Ausdrücken sollten vermieden werden.
  7. Verschiedenes
    1. Vermeiden Sie magische Zahlen, sie sollten durch Konstanten ersetzt werden.
    2. Gleitkommavariablen müssen eine Dezimalstelle angeben (auch wenn diese 0 ist).
    3. Gleitkommavariablen müssen den Realteil angeben, auch wenn sie Null sind (verwenden Sie eine führende 0).

Layout

Blockieren

Ein normaler Codeausschnitt sollte so aussehen:

Code kopieren Der Code lautet wie folgt:

while (!isDone){
doSomething();
isDone = moreToDo();
}

IF-Anweisung sollte so aussehen:

Code kopieren Der Code lautet wie folgt:

if (someCondition){
Aussagen;
} else if (someOtherCondition){
Aussagen;
} sonst {
Aussagen;
}

Eine FOR-Anweisung sollte so aussehen:

Code kopieren Der Code lautet wie folgt:

für (Initialisierung; Bedingung; Aktualisierung){
Aussagen;
}

WHILE-Anweisung sollte so aussehen:

Code kopieren Der Code lautet wie folgt:

while (!isDone) {
doSomething();
isDone = moreToDo();
}

DO … WHILE-Anweisung sollte wie folgt aussehen:

Code kopieren Der Code lautet wie folgt:

mach {
Aussagen;
} while (Bedingung);

SWITCH-Anweisung sollte so aussehen:

Code kopieren Der Code lautet wie folgt:

Schalter (Bedingung) {
Fall ABC:
Aussagen;
// Durchfall
Fall DEF:
Aussagen;
Pause;
Standard:
Aussagen;
Pause;
}

Die TRY … CATCH-Anweisung sollte wie folgt aussehen:

Code kopieren Der Code lautet wie folgt:

versuche es mit {
Aussagen;
} Catch(ex) {
Aussagen;
} endlich {
Aussagen;
}

Einzeilige IF – ELSE-, WHILE- oder FOR-Anweisungen müssen ebenfalls Klammern enthalten, können aber wie folgt geschrieben werden:
if (Bedingung){ Anweisung; }
while (Bedingung){ Anweisung; }
for (Initialisierung; Bedingung; Aktualisierung){ Anweisung;

Leer

Es wird empfohlen, den
    -Operator durch Leerzeichen zu trennen (einschließlich ternärer Operatoren).
  1. Vermeiden Sie die Verwendung von Leerzeichen zur Trennung der folgenden Schlüsselwörter:
    • Pause
    • fangen
    • Weiter
    • tun
    • sonst
    • endlich
    • für
    • Funktion (wenn es sich um eine anonyme Funktion handelt, zum Beispiel: var foo = function(){}; )
    • wenn
    • Rückkehr
    • Schalter
    • das
    • Versuchen Sie es
    • nichtig
    • während
    • mit
  2. Die folgenden Schlüsselwörter müssen durch Leerzeichen getrennt werden:
    • Fall
    • Standard
    • Löschen
    • Funktion (wenn es sich um eine Deklaration handelt, zum Beispiel: function foo(){}; )
    • in
    • instanceof
    • neu
    • werfen
    • typeof
    • var
  3. Komma (,) sollte durch Leerzeichen getrennt werden.
  4. Doppelpunkt (:) Es wird empfohlen, zur Trennung Leerzeichen zu verwenden.
  5. Es wird empfohlen, den Punkt (.) am Ende durch Leerzeichen zu trennen.
  6. Punkt (.) Vermeiden Sie die Verwendung von Leerzeichen am Anfang.
  7. Funktionsaufrufe und Methoden vermeiden die Verwendung von Leerzeichen, zum Beispiel: doSomething(someParameter); // anstelle von doSomething (someParameter)
  8. Verwenden Sie Leerzeilen zwischen logischen Blöcken.
  9. Es wird empfohlen, Aussagen auszurichten, um sie leichter lesbar zu machen.

Notizen

    Ruckliger Code
  1. Es ist nicht erforderlich, Kommentare hinzuzufügen umzuschreiben Sie.
  2. Bitte verwenden Sie für alle Kommentare Englisch.
  3. Von gelösten Lösungen bis hin zu ungenutzten Funktionen müssen Kommentare
  4. für den Code relevant sein.
  5. Nach einer großen Anzahl von Variablendeklarationen
  6. muss ein Kommentar folgen.
  7. Der Kommentar muss die Nützlichkeit des Code-Snippets erläutern, insbesondere des folgenden Code-Snippets.
  8. Kommentare
  9. Es ist nicht nötig, in jeder Zeile hinzuzufügen.

Dokumentation

Im Folgenden finden Sie einige grundlegende Funktions- oder Objektbeschreibungsmethoden:

Zusammenfassung: Beschreiben Sie kurz den Zweck dieser Funktion oder dieses Objekts

Beschreibung: Eine kurze Beschreibung dieser Funktion oder Klasse
Rückgabe: Beschreibt, was diese Funktion zurückgibt (ohne den Rückgabetyp)
Grundlegende Funktionsinformationen

Code kopieren Der Code lautet wie folgt:
function(){
// Zusammenfassung: Bald werden wir genug Schätze haben, um ganz New Jersey zu beherrschen.
// Beschreibung: Oder wir könnten uns einfach einen neuen Mitbewohner suchen.
// Schau, geh und finde ihn. Er schreit dich nicht an.
// Alles, was ich jemals versuche, ist, ihn zum Lächeln und Mitsingen zu bringen
// ihn und tanze um ihn herum und er legt sich einfach in mich hinein.
// Er sagte mir, ich solle in den Gefrierschrank gehen, weil dort ein Karneval war.
// gibt zurück: Schauen Sie, ein Bananarama-Band!
}

Objektfunktionsinformationen

Keine Rückgabewertbeschreibung

Code kopieren Der Code lautet wie folgt:

{
// Zusammenfassung: Dingle, aktiviere die Regenbogenmaschine!
// Beschreibung:
// Ich sag dir was, ich wünschte, ich wäre – oh mein Gott – dieser Strahl,
// Kommt so hoch, die Geschwindigkeit, das solltest du vielleicht anpassen.
// Es hat mir wirklich einen Strich durch die Rechnung gemacht, und das tue ich auch nicht
// Ich möchte nur noch Schleudertrauma sagen, denn das ist etwas zu weit,
// Aber du bist doch versichert, oder?
}

Funktionserklärung

In manchen Fällen sind Funktionsaufrufe und Deklarationen unsichtbar. In diesem Fall haben wir keine Möglichkeit, Anweisungen usw. (für den Aufruf des Programms) in die Funktion einzufügen. Wenn diese Situation auftritt, können Sie eine Klasse verwenden, um die Funktion zu kapseln.

Hinweis: Diese Methode kann nur verwendet werden, wenn die Funktion keine initialisierten Parameter hat. Wenn nicht, werden sie ignoriert.

Code kopieren Der Code lautet wie folgt:

dojo.declare(
„foo“,
null,
{
// Zusammenfassung: Puh, das ist wirklich entspannend, Frylock.
// Beschreibung:
//Vor Tausenden von Jahren, vor dem Anbruch von
// Mann, wie wir ihn kannten, da war Sir Santa Claus: ein
// affenähnliche Kreatur, die grobe und sinnlose Spielzeuge herstellt
// von Dino-Knochen, die er mit
auf schimpansenähnliche Kreaturen schleudert // runzelte die Hände, egal wie sie sich verhielten
// Vorjahr.
// kehrt zurück: Es sei denn, Carl zollt den Elfenältesten im Weltraum Tribut.
}
);

Parameter



  1. Einfacher Typ
    Einfache Typparameter können direkt in der Funktionsparameterdefinition mit Anmerkungen versehen werden.
    [cc lang="javascript"]function(/*String*/ foo, /*int*/ bar)...
    Variable Typparameter
    ​ Hier sind ein paar Modifikatoren als Referenz:
    ? Optionale Parameter
    … Sagte, dass der Bereich der Nudelparameter ungewiss sei
    Array
    function(/*String?*/ foo, /*int...*/ bar, /*String[]*/ baz)...
    Globale Parameterbeschreibung
    Wenn Sie eine Beschreibung hinzufügen möchten, können Sie diese in den Initialisierungsblock verschieben.
    Das grundlegende Informationsformat ist: *Schlüssel* Beschreibungsfeld (*Schlüssel* Beschreibender Satz)
    Das Format von Parametern und Variablen ist: *Schlüssel* ~*Typ*~ Beschreibungsfeld (*Schlüssel* ~*Typ*~ Beschreibender Satz)
    Hinweis: *Keyword* und ~*Type*~ können mit beliebigen Buchstaben und Zahlen ausgedrückt werden.

    Code kopieren Der Code lautet wie folgt:

    Funktion (foo, bar) {
    // foo: String
    // wird als erster Parameter verwendet
    // bar: int
    // wird als zweiter Parameter verwendet
    }

    Variable

    Da die Deklaration von Instanzvariablen, Prototypvariablen und externen Variablen konsistent ist, gibt es viele Möglichkeiten, Variablen zu deklarieren und zu ändern. Die spezifische Definition und Positionierung sollte den Namen, den Typ, den Umfang und andere Informationen der Variablen angeben, an der sie zum ersten Mal erscheint.

    Code kopieren Der Code lautet wie folgt:

    Funktion foo() {
    // myString: String
    // mal: int
    // Wie oft soll myString
    gedruckt werden // Trennzeichen: String
    // Was dazwischen ausgedruckt werden soll myString*
    this.myString = "Platzhaltertext";
    this.times = 5;
    }
    foo.prototype.setString = function (myString) {
    this.myString = myString;
    }
    foo.prototype.toString = function() {
    for(int i = 0; i < this.times; i ) {
    dojo.debug(this.myString);
    dojo.debug(foo.separator);
    }
    }
    foo.separator = "=====";

    Variablenanmerkungen in Objekten

    sollte auf die gleiche Weise wie Objektwerte und Methoden gekennzeichnet werden, beispielsweise wenn sie deklariert werden:

    Code kopieren Der Code lautet wie folgt:

    {
    // Schlüssel: String
    // Ein einfacher Wert
    Schlüssel: „Wert“,
    // key2: String
    // Ein weiterer einfacher Wert
    }

    Rückgabewert

    Da eine Funktion mehrere verschiedene (Typ-)Werte gleichzeitig zurückgeben kann, sollte nach jedem Rückgabewert ein Kommentar zum Rückgabetyp hinzugefügt werden. Innerhalb der Zeile können Kommentare abgegeben werden. Wenn alle Rückgabewerte vom gleichen Typ sind, geben Sie den Rückgabetyp an. Wenn mehrere unterschiedliche Rückgabewerte vorhanden sind, markieren Sie den Rückgabetyp als „gemischt“.

    Code kopieren Der Code lautet wie folgt:

    fonction() {
    si (arguments.longueur) {
    return "Vous avez passé des arguments" ; // String
    } autre {
    return false; // Booléen
    >
    >

    Pseudocode (à discuter)

    Parfois, vous devez ajouter une description de processus fonctionnel pour cette fonction ou cette classe dans une fonction ou une classe. Si vous prévoyez de faire cela, vous pouvez utiliser /*======== (= le caractère apparaît de préférence 5 fois ou plus), ce qui a l'avantage de ne pas avoir à ajouter ces éléments au code (Annotation : auteur original Cela signifie probablement un système de gestion de code).

    Il semble qu'il y aura un très long commentaire dans /*====== et =====*/. Vous pouvez envisager de le supprimer une fois l'ajustement de la fonction terminé.

    Copier le code Le code est le suivant :

    /*=====
    module.pseudo.kwArgs = {
    //url : Chaîne
    // L'emplacement du fichier
    URL : "",
    // mimeType : Chaîne
    // texte/html, texte/xml, etc
    mimeType : ""
    >
    =====*/

    fonction(/*module.pseudo.kwArgs*/ kwArgs){
    dojo.debug(kwArgs.url);
    dojo.debug(kwArgs.mimeType);
    >

    Lien original : http://dojotoolkit.org/developer/StyleGuide
    Traduit par : i.feelinglucky{at}gmail.com de http://www.gracecode.com

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn