Forum:@Technik-Kamele: Javascript aufräumen

aus Kamelopedia, der wüsten Enzyklopädie
Version vom 10. Mai 2011, 16:33 Uhr von J* (Diskussion | Beiträge) (AZ: Die Seite wurde neu angelegt.)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen
H 15.gif Forum > @Technik-Kamele: Javascript aufräumen
Hinweis: Dieser Fred wurde seit 4937 Tagen nicht bearbeitet. Dieser Fred ist offiziell versandet - die Diskussion damit Geschichte. Bitte nichts mehr hinzufügen.
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.