Frank: Forum für Code Review und Testing gesucht

Hallo,

ich habe eine Drag and Drop-JavaScript-Bibliothek (OpenSource) entwickelt, weil mir alle bisherigen Lösungen, die ich gefunden habe, nicht ausgereicht haben. Die Anwendung soll natürlich Cross-Browser-, Cross-Plattform- und Cross-Device-fähig sein und ist auch schon unter Windows, IOS und Android mit verschiedenen Browsern getestet. Dennoch wären ein paar weitere Tests hilfreich. Gibt es ein Forum, eine Plattform auf der sich Entwickler gegenseitig beim Testen unterstützen? Weiß da jemand was?

Außerdem versuche ich Clean Code zu produzieren. Gibt es hierfür auch ein Code Review Forum?

Danke und VG Frank

  1. Hier hat vermutlich keiner Lust zu testen oder zu reviewen? ;-)

    1. Hier hat vermutlich keiner Lust zu testen oder zu reviewen? ;-)

      Die Frage ist ob Du Kritik verträgst.

      1. Klar! Man wird ja irgendwann blind, wenn man sich immer selbst testet und reviewt (Bock und Gärtner in einer Person) ;-)

    2. Hallo Frank,

      Hier hat vermutlich keiner Lust zu testen oder zu reviewen? ;-)

      Zum unverbindlichen Ausprobieren sicher.

      Bis demnächst
      Matthias

      --
      Pantoffeltierchen haben keine Hobbys.
    3. Hallo Frank,

      Hier hat vermutlich keiner Lust zu testen oder zu reviewen? ;-)

      ich habe hier auch schon um Tests gebeten und zielführende Antworten erhalten. Als Einzelkämpfer oder Hobbyprogrammierer kann man sich ja garnicht alle Gerätetypen leisten.

      Du kannst deine Frage auch mit „Seitenbewertung“ taggen.

      Gruß
      Jürgen

      PS Als Dankeschön hat es dann einen Wiki-Artikel gegeben

  2. problematische Seite

    Also gut! 😀

    Hier der Link zu einer Testseite:

    http://paloula.de/dragdrop/gallery.html

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

    Danke schon mal im Voraus!

    1. problematische Seite

      hallo

      Hier der Link zu einer Testseite:

      http://paloula.de/dragdrop/gallery.html

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

      Danke schon mal im Voraus!

      de.paloula.xml.commons.PaloulaXmlException: [0001] [com.paloula.xml.SequenceDocument] The desired element is null. Element with id:

      +multiselect + copy

      Ich habe ein Bild von Links nach Mitte und wieder zurück kopiert.

      1. problematische Seite

        Danke!

        Ich konnte es aber leider nicht nachstellen... Mhmm?

        Was ist Deine Umgebung (OS/Browser)?

        1. problematische Seite

          hallo

          Danke!

          Ich konnte es aber leider nicht nachstellen... Mhmm?

          Was ist Deine Umgebung (OS/Browser)?

          Firefox, windows.

          Da sind noch andere Bugs, Bilder lassen sich nicht selektieren, was auf korrrupte IDs schliessen lässt.

          1. problematische Seite

            Schieber ist auf Multiselect? Sagt die Console etwas?

            1. problematische Seite

              hallo

              Schieber ist auf Multiselect? Sagt die Console etwas?

              Derzeit meldet die Console

              [Mitteilungsdetails anzeigen/ausblenden] SyntaxError: JSON.parse: unexpected character at line 1 column 2 of the JSON data[Weitere Informationen] dragdropexamples.js:46:25

              error http://paloula.de/dragdrop/app/js/dragdropexamples.js:46:25 i http://paloula.de/dragdrop/app/js/jquery-3.2.1.min.js:2:28012 fireWith http://paloula.de/dragdrop/app/js/jquery-3.2.1.min.js:2:28783 A http://paloula.de/dragdrop/app/js/jquery-3.2.1.min.js:4:14058 c/< http://paloula.de/dragdrop/app/js/jquery-3.2.1.min.js:4:16323

              1. problematische Seite

                Danke Beat!

                Kann noch jemand den Fehler nachvollziehen? Ich kann es leider nicht.

                1. problematische Seite

                  hallo

                  Danke Beat!

                  Kann noch jemand den Fehler nachvollziehen? Ich kann es leider nicht.

                  Kannst du mal eine Seite kreieren, die allein das Clientseitige Verhalten testet?

                  Ich verstehe nicht, was der Server in dem Ganzen Prozess zu tun hat.

                  1. problematische Seite

                    Der Server sorgt dafür, dass nach dem Neuladen der Seite die Bilder nicht wieder zurückgesetzt werden, hat mit dem eigentlichen DragDrop also nichts zu tun…

                    Muss kurz den Server neu starten, dann:

                    http://paloula.de/dragdropclient/gallery.html

                    1. problematische Seite

                      Ist gestartet!

              2. problematische Seite

                hallo

                hallo

                Schieber ist auf Multiselect? Sagt die Console etwas?

                Derzeit meldet die Console

                Da ging noch ein 500 Server Error voran

              3. problematische Seite

                Da war wohl der Server kurz weg und AJAX erwartet ein JSON als Antwort, dass konnte aber nicht geparst werden. Das muss ich noch abfangen. Danke, das war hilfreich!

    2. problematische Seite

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

      Leider ohne Dokumentation.

      1. problematische Seite

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

        Leider ohne Dokumentation.

        Das stimmt, leider bin ich noch nicht soweit. Ich hab versucht, in github/Readme eine Doku einzufügen, aber die Codezeilen wurden zu Listenbullets. Ich kapiere die Formatierung dort nicht.

        1. problematische Seite

          Tach!

          Ich hab versucht, in github/Readme eine Doku einzufügen, aber die Codezeilen wurden zu Listenbullets. Ich kapiere die Formatierung dort nicht.

          Die Endung .md steht für Markdown. Das ist dieselbe Syntax, wie sie hier im Forum verwendet wird (abgesehen vom Dialekt).

          dedlfix.

        2. problematische Seite

          Eine Doku ist wie eine Bewerbung:

          Die ersten 1..3 Sätze sollten das Interesse wecken, also beschreiben, was Deine Lib macht und für was sie gut ist. So kann hier bereits ein Anwender entscheiden ob er sie überhaupt nutzen will.

          Erst in den nächsten Abschnitten beschreibst Du das wie. Und das ist auch einer Bewerbung ähnlich, der Anwender soll daran sehen, wie er mit Deiner Lib seine bisherigen Prozesse vereinfachen kann.

          MfG

    3. 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.

      1. problematische Seite

        Hallo dedlfix,

        vielen Dank für Deine Hinweise!

        Weißt Du ob es ein Linter-Plugin für Notepad++ gibt oder kannst Du ein JS-IDE empfehlen?

        Danke! Frank

        1. problematische Seite

          hallo

          Hallo dedlfix,

          vielen Dank für Deine Hinweise!

          Weißt Du ob es ein Linter-Plugin für Notepad++ gibt oder kannst Du ein JS-IDE empfehlen?

          Der Plagin Manager zeigt

          JS Lint

          A Notepad++ plugin that allows users to run JSLint (The JavaScript Code Quality Tool) against their open JavaScript files (more about JSLint at http://www.jslint.com/lint.html).
          Author: Martin Vladic
          Source: https://sourceforge.net/projects/jslintnpp/
          Latest update: 0.8.3 
          - Bug fixed: "#12 Doesn't work with Javascript/JSON files in newer versions of N++"
          - JSLint script updated to version from 2015-11-16 
          - JSHint script updated to version 2.6.3 (Warning: versions of JSHint newer than 2.6.3 doesn't work anymore with the version of V8 JavaScript engine that this plugin is using!!!) 
          0.8.2 
          - JSHint download URL changed to https://raw.github.com/jshint/jshint/master/dist/jshint.js (let's hope this doesn't change in the future). 
          - Detection of JSHint version number added. It is read from the first line of source file (let's hope this doesn't change in the future, too). 
          - JSLint script updated to version from 2013-11-23 
          - JSHint script updated to version 2.3.0
          0.8.1
          - JSLint script updated to version from 2012-11-17
          - JSHint script updated to version downloaded from www.jshint.com on 2012-11-22
          - Bugs fixed:
          - "Cannot update to latest jshint (download link returns 404)"
          - "Invalid jshint url in about dialog"
          
        2. problematische Seite

          Tach!

          Weißt Du ob es ein Linter-Plugin für Notepad++ gibt oder kannst Du ein JS-IDE empfehlen?

          Für ernsthafte Softwareentwicklung nehme ich Notepad++ nicht, nur für Textbearbeitung und für "kurz mal drei Zeilen Code geschrieben".

          Generell kann ich die IDEs von JetBrains empfehlen. Die sind nicht frei, kosten aber auch nicht die Welt (Einzelnutzer-Lizenzen). Und es ist ein Abo-Model, wenn man die regelmäßigen Updates bekommen möchte.

          Außerdem ist noch der Visual Studio Code sehr beliebt. Für den gibts jede Menge Plugins, aber mehr kann ich dazu nicht sagen, weil ich ihn noch nicht verwendet habe.

          dedlfix.

        3. problematische Seite

          @Beat und dedlfix

          Danke!!!

      2. problematische Seite

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

        Was ich noch sagen wollte: Das doppelte $($("<div class='paloula-selected'></div>")) erzeugt ein jQuery-Objekt

        var html = $("<div class='paloula-selected'></div>");
        
        html.css();
        

        würde nicht funktionieren.

        var html = $($("<div class='paloula-selected'></div>"));
        
        html.css();
        

        schon.

        1. problematische Seite

          Tach!

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

          Was ich noch sagen wollte: Das doppelte $($("<div class='paloula-selected'></div>")) erzeugt ein jQuery-Objekt

          Der einfache Aufruf erzeugt bereits ein jQuery-Objekt. Der zweite Aufruf ändert daran nichts mehr.

          var html = $("<div class='paloula-selected'></div>");
          
          html.css();
          

          würde nicht funktionieren.

          Doch, doch, problemlos.

          dedlfix.

          1. problematische Seite

            Stimmt! Ich weiß nicht mehr, woher ich das habe...