Forum:@Technik-Kamele: Javascript aufräumen: Unterschied zwischen den Versionen
J* (Diskussion | Beiträge) K (→Vorschlag 1) |
J* (Diskussion | Beiträge) (ach, ja: Schluss und Unterschrift) |
||
Zeile 96: | Zeile 96: | ||
Jetzt weiß man gleich, wo die Funktion dazugehört. Mediawiki macht das inzwischen ja ähnlich, da ist jetzt alles im mw-Objekt drinne. | Jetzt weiß man gleich, wo die Funktion dazugehört. Mediawiki macht das inzwischen ja ähnlich, da ist jetzt alles im mw-Objekt drinne. | ||
+ | |||
+ | == Umsetzung == | ||
+ | Umsetzen ließe sich das ähnlich wie bei den Bild-Vervorlagungen: erstmal für neue Code-Schnipsel und auf Dauer die Altlasten beseitigen. | ||
+ | |||
+ | Grüße --[[Kamel:J*|J*]] 17:44, 10. Mai 2011 (NNZ) |
Version vom 10. Mai 2011, 16:44 Uhr
Forum > @Technik-Kamele: Javascript aufräumen |
Bei Bedarf dann halt einen neuen Fred starten oder diesen notfalls reanimieren.
Moin moin,
in der Kamelopedia haben sich ja inzwischen so einige Javascripts angesammelt.
Insbesondere, da wir da auch zu mehrt dran basteln, habe ich so die Befürchtung, dass uns das irgendwann um die Ohren fliegt, einfach weils zu unübersichtlich geworden ist, oder weil derjenige, der den Code verzapft hat, die Herde verlassen hat (das soll ja angeblich vorkommen).
Ich habe daher zwei Vorschläge (kein entweder-oder sondern beides):
Vorschlag 1
Damit Code für Andere besser verständlich ist, sollte jede Funktion sollte mit einer Dokumentation versehen werden. Darin enthalten ist mindestens:
- ein Einzeiler, der Beschreibt, was die Funktion tut
- Beschreibung der Parameter einschließlich Angabe des Datentyps (string, integer, array etc.)
- Beschreibung des Rückgabewerts einschließlich Angabe des Datentyps
Beispiel:
/**
* Die Funktion berechnet die Anzahl von Beinen mehrerer Kamele.
* Parameter kamele: Anzahl der Kamele (integer)
* Rückgabewert: Anzahl der Beine (integer)
*/
function berechne_beine(kamele)
{
return 4 * kamele;
}
Vorschlag 2
Um zu vermeiden, dass Variablen oder Funktionennamen versehentlich doppelt benutzt werden, und klarzumachen, wozu eine Funktion / Variable überhaupt gut ist, sollten Funktionen in Modulen gruppiert werden (ähnlich wie Namespaces in C++). Dazu wird in der commons.js folgender Code platziert:
/* erzeugt ein neues Modul.
* Parameter m: Name des zu erstellenden Moduls, kann Untermodule enthalten (String)
* Rückgabewert: void
*
* Verwendungs-Beispiel:
*
* Modul("Bildsuche.Syntaxparser");
*
* Bildsuche.Syntaxparser.checkSyntax = function checkSyntax( syntax )
* {
* ... Code ...
* }
*/
function Module(m)
{
/*
* interne Funktion!
* erzeugt aus einem Untermodul-Array eine Modulstruktur innerhalb des containers.
*/
function createModule(names,container)
{
if (names.length == 0)
return;
var nextName = names.shift();
if (container[nextName] == null)
{
container[nextName] = Object();
container[nextName].parent = container;
}
createModule(names,container[nextName]);
}
createModule(m.split("."),window);
}
Zu beginn einer Javascript-Datei werden dann die Module angegeben, in die die Datei Funktionen hinzufügt:
Module("Bildsuche.Syntaxparser");
Module("GaGA");
Dann die Funktionen / variablen dort platziert werden:
Bildsuche.Syntaxparser.irgendeineVariable = "irgendeinwert";
GaGA.irgendeineFunktion = function irgendeineFunktion () {
return "irgendwas";
}
Jetzt weiß man gleich, wo die Funktion dazugehört. Mediawiki macht das inzwischen ja ähnlich, da ist jetzt alles im mw-Objekt drinne.
Umsetzung
Umsetzen ließe sich das ähnlich wie bei den Bild-Vervorlagungen: erstmal für neue Code-Schnipsel und auf Dauer die Altlasten beseitigen.
Grüße --J* 17:44, 10. Mai 2011 (NNZ)