dedlfix: Forum für Code Review und Testing gesucht

Beitrag lesen

problematische Seite

Tach!

Der Sourcecode ist hier: https://github.com/Paloula/DragDropEasy

Ich hab mir nicht alles angeschaut, aber ein paar Dinge sind mir aufgefallen.

Vergleiche à la if (irgendwas == true) sind unnötig geschwätzig. "Ist es wahr, dass irgendwas wahr ist" lässt sich auch als "ist irgendwas" notieren, also if (irgendwas).

Da ist ein $($("<div class='paloula-selected'></div>")), was mir nach unnötiger Schachtelung aussieht, weil der innere Aufruf bereits ein jQuery-Objekt liefert.

Funktionen als var name = function () {...}; zu definieren, ist unnötig Schreibarbeit, wenn statt var auch const genommen werden könnte. Das kann man einfacher als function name() {...} schreiben. Zu beachten ist aber der feine Unterschied, dass letzteres direkt nach dem Code-Parsen zur Verfügung steht, ersteres erst, wenn die Ausführung des Codes an der Stelle vorbeigekommen ist. Meist braucht man aber einfach nur eine Funktion und benötigt nicht Javascripts Konzept, dass Funktionen "first-class citizens" sind, also dass sie wie Variablen behandelt werden. Besonders nicht, wenn sie const sein können.

Allgemein: Nimm mal einen JS-Linter, und am besten eine IDE mit eingebautem Linter, die dir gleich alle Ungereimtheiten beim Tippen anzeigt. Da sind jede Menge Semikolon-Inkonsistenzen und andere Geschichten in deinem Code.

Leerzeichen am Zeilenende können weg. Sowas machen Editoren auch von selbst, wenn man es ihnen konfiguriert.

In Code wie diesem ist die Variable x zweimal deklariert.

if (bedingung) {
  var x = 23;
  // mehr Code
} else {
  var x = 42;
  // mehr Code
}

Das Schlüsselwort var wird aber nur einmal pro Scope benötigt, auch wenn der erste Schreibzugriff auf die Variable bedingt erfolgt. var wird bereits vom Parser berücksichtigt und findet nicht erst zur Laufzeit Anwendung. Das zweite var kann also weg, oder besser die Deklaration eine Klammernebene nach außen verlegen.

var x;
if (bedingung) {
  x = 23;
  // mehr Code
} else {
  x = 42;
  // mehr Code
}

dedlfix.