Guten Morgen,
zurzeit arbeite ich an einer Software die leider massiv auf JavaScript setzt und habe dort versucht, möglichst sauber zu programmieren. So habe ich eine Klasse „Routing“ die etwa wie folgt aufgebaut ist:
"use strict";
function Routing(map, zoom) {
this.map = map;
this.zoom = zoom;
this.map.centerMap();
}
Routing.prototype.addRoute = function(waypoints) {
Route.route(waypoints).addTo(map);
}
Und so weiter. Der Quellcode hat natürlich auch über allen Funktionen entsprechende Kommentare, da ich festgestellt habe, dass der Quellcode von JavaScript-Bibliotheken sehr häufig schlecht oder gar nicht kommentiert ist. Dank der Eigenschaften von JavaScript, dass durch den Kontext mal hier und mal da etwas „injiziert“ wird, macht das ganze nicht ganz einfach nachzuvollziehen.
Leider ist nicht mein kompletter Code so aufgebaut, denn mein Code der nach „DOMContentLoaded“ ausgeführt wird, ist eher unübersichtlich, da von einem kleinen Teil immer wieder ein, zwei Zeilen hinzukamen. Ich bin damit etwas unzufrieden und ich denke, ich werde es noch mal überarbeiten müssen.
Die Bibliothek die ich nutze wurde in reinem JavaScript geschrieben und enthält einige Bugs. Aber ich muss auch einige Änderungen vornehmen, damit diese so arbeitet, wie ich mir das vorstelle. Diese nutzen aber nicht den Stil mit prototype
sondern mit extend
und include
was irgendwo im Quellcode definiert wurde, was ich aber nicht vollständig zurückführen konnte. Diesen Methoden wird dann ein Object
übergeben, der die Methode in der Form
L.Map = L.extend({
options: {
zoomlevel: 7
},
initialize: function (id, options) {
setOptions(options);
init(id);
},
// Weitere Funktionen nach diesem Schema.
});
// Hier fängt es schon an... Was soll sowas?! Also haben wir nun L.map und L.Map, super!
L.map = function (id, options) {
return new L.Map(id, options);
};
Seit einiger Zeit beschäftige ich mich auch mit JavaScript-Compilern die aus einer vernünftigen Sprache JavaScript erzeugen. Die genutzten Bibliotheken nutzen das leider nicht. Dort kommen grunt
, jake
also auch „plain old npm
“ zum Einsatz.
Mein aktueller Favorit unter den Compilern ist TypeScript, da es sehr sauber, und sehr einfach ist und schöne Konzepte anbietet. Das scheint mir auch der Compiler zu sein, der zurzeit am meisten öffentlich sichtbar ist. Was meint ihr? Und was nutzt ihr so?
Ich habe also ein paar mehrere Fragen und würde mich auch über grundsätzliche Einschätzungen freuen.
- Wie arbeitet ihr in größeren JavaScript-Projekten um den Quellcode sauber zu halten?
- Welchen OOP-Ansatz verwendet ihr, wenn ihr denn einen verwendet?
- Wo kommt dieses
extend
undinclude
her? Kann es sein, dass das von jQuery oder dergleichen kommt? Ich bin mir da ehrlich gesagt nicht sicher. - Bevorzugt ihr JavaScript-Compiler gegenüber reinem JavaScript? Wenn ja, welche gefallen euch und wieso?
- Ich glaube ja, dass JS-Compiler das Debuggen erschweren können, weil sie aus
class
und anderen Konstrukten kryptischen JavaScript-Code erzeugen. Was meint ihr dazu?
Ich bin gespannt und freue mich über jeden Tipp.
Freundliche Grüße
Christian