Vorwort
Die Vorteile guter JavaScript-Schreibgewohnheiten sind selbstverständlich. Heute empfiehlt Bin Go, dass Sie Dojo JavaScript -Programmierspezifikationen für Sie, die ziemlich gute Spezifikationen zum Programmierstil für JavaScript sind. Es wird empfohlen, dass Sie aus dieser Spezifikation zum Schreiben von JavaScript lernen. Vielen Dank an I.Feelinglucky für die Übersetzung.
Sequenz
Jede Gewalt an diesem Leitfaden ist erlaubt, wenn sie die Lesbarkeit verbessert.
Alle Codes müssen anderen Lesen leicht gemacht werden.
Schnelle Referenz
Kern -API Bitte verwenden Sie den folgenden Stil:
| Struktur | Regel | Kommentare |
| Modul | Kleinbuchstaben | Verwenden Sie nicht mehrere Semantik (nie mehrere Wörter) |
| Art | Kamel | |
| Öffentliche Methoden | mischen | Andere externe Anrufe können in diesem Stil auch Lower_case () verwenden |
| Öffentliche Variablen | mischen | |
| Konstante | Kamel oder Kapital |
Obwohl das Folgende nicht erforderlich ist, wird empfohlen, zu verwenden:
| Struktur | Regel |
| Private Methode | Gemischt, Beispiel: _mixed Case |
| Private Variablen | Gemischt, Beispiel: _mixed Case |
| Methodenparameter | Gemischt, Beispiel: _mixed Case, gemischtes Gehäuse |
| Lokale Variable | Gemischt, Beispiel: _mixed Case, gemischtes Gehäuse |
Benennungsspezifikationen
1. Der variable Name muss Kleinbuchstaben sein.
2. Die Benennung von Klassen verwendet Kamelbenennungsregeln wie:
Konto, EventHandler
3. Konstanten müssen an der Vorderseite eines Objekts (Klasse) oder der Aufzählungsvariablen deklariert werden. Die Benennung einer Aufzählungsvariablen muss eine praktische Bedeutung haben, und ihre Mitglieder müssen Kamelbenennungsregeln verwenden oder profitieren:
Die Codekopie lautet wie folgt:
var nodetypes = {
Element: 1,,
Dokument: 2
}
4. Abkürzte Wörter können Kapitalnamen nicht als Variablennamen verwenden:
getinnerhtml (), getXml (), xmldocument
5. Der Befehl der Methode muss ein Verb oder ein Verbphrase sein:
obj.getsomeValue ()
6. Die Benennung öffentlicher Klassen muss mit gemischten Namen (Mixed Case) benannt werden.
7. Der Name einer CSS -Variablen muss ihre entsprechende Variable der gleichen öffentlichen Klassen verwenden.
8. Die Variablen -Attribut -Mitglieder der privaten Klasse müssen mit einem gemischten Namen (gemischtes) und unterstrichen (_) benannt werden. Zum Beispiel:
Die Codekopie lautet wie folgt:
var myclass = function () {
var _Buffer;
this.dosomething = function () {
};
}
9. Wenn die Variable auf privat eingestellt ist, muss sie vorher unterstrichen werden.
this._somePrivateVariable = Anweisung;
10. Gemeinsame Variablen müssen einen Typnamen verwenden, der mit ihrem Namen übereinstimmt:
Settopic (Thema) // Variable Thema ist eine Variable des Typs
11. Alle Variablennamen müssen englische Namen verwenden.
12. Wenn eine Variable einen großen Bereich (großer Bereich) hat, müssen globale Variablen verwendet werden. Zu diesem Zeitpunkt kann es als Mitglieder einer Klasse konzipiert werden. Wenn der relative Bereich kleinere oder private Variablen ist, verwenden Sie präzise Wörter, um es zu benennen.
13. Wenn eine Variable ihren impliziten Rückgabewert hat, vermeiden Sie die Verwendung ihrer ähnlichen Methoden:
GetHandler (); // Vermeiden Sie die Verwendung von GetEventHandler ()
14. Öffentliche Variablen müssen eindeutig ihre eigenen Attribute ausdrücken, um Unklarheiten in der Bedeutung zu vermeiden, wie z.
MouseEventHandler
, nicht mseevthdlr.
Bitte achten Sie auf diese Bestimmung, die Vorteile davon sind sehr offensichtlich. Es kann die durch den Ausdruck definierte Bedeutung deutlich ausdrücken. Zum Beispiel:
dojo.events.mouse.handler // anstelle von dojo.events.mouse.mouseeEventHandler
15. Klasse/Konstruktoren können mit dem Namen benannt werden, der seine Basisklasse erweitert, so dass der Name seiner Basisklasse korrekt und schnell gefunden werden kann:
EventHandler
UieventHandler
MouseEventHandler
Die Basisklasse kann ihre Benennung reduzieren und gleichzeitig ihre Eigenschaften beschreiben:
MouseEventHandler im Gegensatz zu MouseUeventHandler.
Spezielle Namensschwerpunkte
Der Begriff "get/set" sollte nicht mit einem Feld verknüpft werden, es sei denn, er ist als private Variable definiert.
Der von "IS" vorangegangene variable Name sollte ein boolescher Wert sein und "Has", "Can" oder "sollte" sein.
Der Begriff "Berechnen" als Variablenname sollte eine berechnete Variable sein.
Der Begriff "Find" als Variablenname sollte eine Variable sein, die festgestellt wurde.
Der Begriff "initialisieren" oder "init" als variabler Name sollte eine Klasse oder eine andere Art von Variablen sein, die instanziiert (initanisiert).
UI (Benutzeroberfläche) Steuervariablen sollten vom Namen des Steuertyps folgen: LeftCombobox, TopScrollPane.
Die Pluralnummer muss ihre gemeinsame Namenskonvention haben (Originaltext: Pluralform muss verwendet werden, um Sammlungen zu benennen).
Variablennamen beginnen mit "num" oder "count" herkömmlicherweise numerisch (Objekt).
Wiederholte Variablen werden empfohlen, um Variablen mit Namen wie "I", "J", "K" (und so weiter) zu verwenden.
Ergänzende Begriffe müssen ergänzende Wörter verwenden, z. B.: Get/Setzen, hinzufügen/entfernen, erstellen/zerstören, starten/stoppen, einfügen/löschen, beginnen/beenden usw.
Versuchen Sie, nach Möglichkeit Abkürzung zu verwenden.
Vermeiden Sie Unklarheiten von Booleschen Variablennamen, zum Beispiel:
isnoTerror, isnotfound ist illegal
Die Fehlerklasse empfiehlt, dem variablen Namen "Ausnahme" oder "Fehler" hinzuzufügen.
Wenn eine Methode eine Klasse zurückgibt, sollte sie angeben, was sie auf ihren Namen zurückgibt. Wenn es sich um einen Prozess handelt, sollte es angeben, was es getan hat.
dokumentieren
Bitte verwenden Sie 4 Tabellen mit leeren Registerkarten, um einzusetzen.
Wenn Ihr Editor Datei -Tags unterstützt, fügen Sie bitte die folgende Zeile hinzu, um unser Code zu erleichtern, das Sie leichter zu lesen haben:
// vim: ts = 4: noet: tw = 0:
Anmerkung des Übersetzers: Ausländer verwenden häufiger VIM -Redakteure, sodass Sie diesen Artikel befolgen können.
Die Codefaltung muss erstellt und logisch sein:
Die Codekopie lautet wie folgt:
var einige expression = Expression1
+ Expression2
+ Expression3;
var o = einigeObject.get (
Ausdruck1,
Ausdruck2,
Ausdruck3
);
HINWEIS: Die Einklebung des Ausdrucks sollte mit der variablen Deklaration übereinstimmen.
HINWEIS: Die Parameter der Funktion sollten explizit eingerichtet werden, und die Einkleberregeln stimmen mit anderen Blöcken überein.
Variable
Layout
Stück
Ein normaler Code -Snippet sollte so aussehen:
Die Codekopie lautet wie folgt:
while (! isdone) {
dosometing ();
isdone = moretodo ();
}
Die IF -Aussage sollte so aussehen:
Die Codekopie lautet wie folgt:
if (somecondition) {
Aussagen;
} else if (eine andere Kondition) {
Aussagen;
} anders {
Aussagen;
}
Die für die Aussage sollte so aussehen:
Die Codekopie lautet wie folgt:
für (Initialisierung; Bedingung; Update) {
Aussagen;
}
Die while -Aussage sollte so aussehen:
Die Codekopie lautet wie folgt:
while (! isdone) {
dosometing ();
isdone = moretodo ();
}
Das tun… die while -Aussage sollte so aussehen:
Die Codekopie lautet wie folgt:
Tun {
Aussagen;
} while (Bedingung);
Die Switch -Anweisung sollte so aussehen:
Die Codekopie lautet wie folgt:
Schalter (Zustand) {
Fall ABC:
Aussagen;
// Falte
Fall def:
Aussagen;
brechen;
Standard:
Aussagen;
brechen;
}
Der Versuch… die Catch -Aussage sollte so aussehen:
Die Codekopie lautet wie folgt:
versuchen {
Aussagen;
} catch (ex) {
Aussagen;
} Endlich {
Aussagen;
}
Wenn Sie sonst andern, während oder für Aussagen müssen auch in Klammern enthalten sein, können sie jedoch so geschrieben werden:
if (Bedingung) {Anweisung; }
while (Bedingung) {Anweisung; }
für (Intialisierung; Bedingung; Update) {Anweisung; }
leer
Kommentare
dokumentieren
Das Folgende enthält einige grundlegende Funktionen oder Objekte Beschreibung Methoden:
Zusammenfassung: Eine kurze Beschreibung des Zwecks dieser Funktion oder Objektimplementierung
Beschreibung: Eine kurze Beschreibung dieser Funktion oder Klasse
Rückgabe: Beschreibt, was diese Funktion zurückgibt (nicht den Rückgabetyp)
Grundfunktionsinformationen
Die Codekopie lautet wie folgt:
Funktion(){
// Zusammenfassung: Bald haben wir genug Schatz, um ganz New Jersey zu regieren.
// Beschreibung: Oder wir könnten einfach einen neuen Mitbewohner bekommen.
// Schau, du gehst ihn. Er schreit dich nicht an.
// Alles, was ich jemals versuche zu tun, ist ihn zum Lächeln zu bringen und herumsingen
// er und tanze um ihn herum und er liegt einfach in mich.
// Er sagte mir, ich solle in den Gefrierschrank einsteigen, weil es dort einen Karneval gab.
// Rückkehr: Schau, ein Bananarama -Band!
}
Objektfunktionsinformationen
Keine Rückgabewertbeschreibung
Die Codekopie lautet wie folgt:
{
// Zusammenfassung: Dingle, die Regenbogenmaschine einbeziehen!
// Beschreibung:
// Sag dir was, ich wünschte ich wäre-oh mein g-dieser Strahl,
// So kommst du, die Geschwindigkeit, vielleicht willst du das anpassen.
// Es hat dort wirklich eine Nummer auf meinem Rücken gemacht. Ich meine, und ich nicht
// will nur Schleudertrauma sagen, denn das ist ein bisschen zu weit,
// Aber du bist verletzt, oder?
}
Funktionserklärung
In einigen Fällen sind die Aufruf und Erklärung der Funktionen unsichtbar. In diesem Fall haben wir keine Möglichkeit, Anweisungen usw. (für Programmanrufe) in die Funktion einzubeziehen. Wenn Sie auf diese Situation stoßen, können Sie eine Klasse verwenden, um die Funktion zu verkapulieren.
Hinweis: Diese Methode kann nur ohne initialisierte Parameter der Funktion verwendet werden. Wenn nicht, werden sie ignoriert.
Die Codekopie lautet wie folgt:
dojo.declare (
"foo",
Null,
{
// Zusammenfassung: Puh, das ist sicher entspannend, Frylock.
// Beschreibung:
// vor Tausenden von Jahren vor dem Morgengrauen von
// Mann, wie wir ihn kannten, gab es Sir Santa of Claus: eine
// APE-ähnliche Kreativität, die Roh- und sinnlose Spielzeuge machen
// Dino-Knochen, die sie auf schimpfartige Kreativität schleudern
// zerknitterte Hände unabhängig davon, wie sie sich verhalten haben
// Vorjahr.
// Rückgaben: Es sei denn, Carl zahlt den Elfen -Ältesten im Weltraum Gebühren.
}
);
<h3> Parameter </h3>
<ol>
<li> Einfacher Typ
Einfache Parametertypen können direkt kommentiert und in der Definition der Funktionsparameter erläutert werden.
[cc Lang = "javaScript"] Funktion (/*String*/ foo,/*int*/ bar) ...
Parameter vom Typ variabler Typ
Hier sind einige Modifikatoren als Referenz:
? Optionale Parameter
... Der Parameterbereich des Gesichts ist ungewiss
Array
Funktion (/*String?*/ foo, /* int...*/ baly,/*String []*/ baz) ...
Globale Parameterbeschreibung
Wenn Sie eine Beschreibung hinzufügen möchten, können Sie sie in den Initialisierungsblock verschieben.
Das grundlegende Informationsformat lautet: * Schlüssel * Beschreibung Feld ( * Schlüssel * Beschreibung Satz)
Das Format von Parametern und Variablen lautet:*Schlüssel*~*Typ*~ Beschreibung Feld (*Schlüssel*~*Typ*~ Beschreibung Satz)
HINWEIS:*Schlüsselwörter*und ~*Typ*~ kann in Buchstaben und Zahlen ausgedrückt werden.
Die Codekopie lautet wie folgt:
Funktion (foo, bar) {
// Foo: String
// verwendet als erster Parameter
// Bar: int
// Wird zum zweiten Parameter verwendet
}
Variable
Da die Deklarationen von Instanzvariablen, Prototypvariablen und externen Variablen konsistent sind, gibt es viele Methoden zum Deklarieren und Ändern von Variablen. Spezifische Definition und Positionierung sollten den Namen, Typ, Umfang und andere Informationen der Variablen am ersten Ort angeben, an dem die Variable angezeigt wird.
Die Codekopie lautet wie folgt:
Funktion foo () {
// MyString: String
// mal: int
// wie oft zum Drucken von MyString
// Separator: String
// was zwischen MyString* ausdrucken*
this.myString = "Platzhaltertext";
this.times = 5;
}
foo.prototype.setstring = function (mystring) {
this.mystring = mystring;
}
foo.prototype.toString = function () {
für (int i = 0; i <this.times; i ++) {
dojo.debug (this.mystring);
dojo.debug (foo. separator);
}
}
foo.separator = "=====";
Variable Kommentare in Objekten
Eine Annotationsmethode, die mit Objektwerten und -methoden übereinstimmt, sollte verwendet werden, z. B. wenn sie deklarieren:
Die Codekopie lautet wie folgt:
{
// Schlüssel: String
// ein einfacher Wert
Schlüssel: "Wert",
// KEY2: String
// ein weiterer einfacher Wert
}
Rückgabewert
Da Funktionen gleichzeitig mehrere verschiedene (Typen-) Werte zurückgeben können, sollte jeder Rückgabewert zum Kommentar des Rückgabetyps hinzugefügt werden. Kommentare werden nur in der Zeile kommentiert. Wenn alle Rückgabewerte vom gleichen Typ sind, wird der zurückgegebene Typ angegeben. Wenn es mehrere verschiedene Rückgabewerte gibt, ist der Rückgabetyp als "gemischt" gekennzeichnet.
Die Codekopie lautet wie folgt:
function () {
if (Argumente.length) {
Rückgabe "Sie haben Argumente bestanden"; // String
} anders {
false zurückgeben; // boolean
}
}
Pseudocode (zu diskutieren)
Manchmal müssen Sie eine funktionale Prozessbeschreibung für diese Funktion und Klasse in einer Funktion oder Klasse hinzufügen. Wenn Sie dies tun möchten, können Sie /*======= verwenden (= Zeichen sollten 5 -mal oder mehr angezeigt werden). Der Vorteil davon ist, dass Sie diese Dinge nicht zum Code hinzufügen müssen (Anmerkung des Übersetzers: Der ursprüngliche Autor kann ein Code -Management -System bedeuten).
Auf diese Weise wird es einen sehr langen Kommentar in /*===== und ====* /geben. Sie können überlegen, ob die Funktion eingestellt wurde.
Die Codekopie lautet wie folgt:
/*=======
module.pseudo.kwargs = {
// URL: String
// Der Ort der Datei
URL: "",
// Mimetype: String
// text/html, text/xml usw.
Mimetyp: ""
}
======*/
Funktion (/*module.pseudo.kwargs*/ kwargs) {
dojo.debug (kwargs.url);
dojo.debug (kwargs.mimetype);
}
Original -Link: http://dojotoolkit.org/developer/styleguide
Übersetzt von: i.feelinglucky {at} gmail.com von http://www.gracecode.com