"Wie code ich richtig in Javascript?" von Wolfram Kriesing. Code Conventions usw. Brauchbare Editoren: Komodo, Aptana, Eclipse, Netbeans wegen Code Completion, Syntax Check, Code Analyzer (JSLint, findet z.B. IE traps [in phing? svn? your IDE?]) und alles, was für andere Programmiersprachen auch zutrifft. Templates für Code-Strukturen, für das ganze Team. Testen mit Hilfe der Firebug-Konsole nicht vergessen, die auch Auto-Completion mitbringt und das komplette API anzeigen kann.
Watch the traffic: Neben Fiddler und HTTPLiveHeaders existiert auch noch Charles. Nützlich sind auch Debugger, neuerdings auch innerhalb von Eclipse (PDT). Im Sourcecode: debugger; ist ein selbstgesetzter Breakpoint. console.time() und console.timeEnd() und andere console-Methoden. functionName.toString() gibt im Firebug den Sourcecode einer Funktion aus. Firebug hat einen Profiler. Dojo hat einen DocTest.
Update: Wolfram, mit dem ich mich auf der BarCamp-Party am Samstag noch sehr nett unterhalten habe, hat mittlerweile die Slides seiner beiden Vorträge online gestellt.
Micheal Probst Stuckmann stellt seine Diplomarbeit über den professionellen Einsatz von Javascript vor. Erste Feststellung: Firebug FTW! Zweitens: Spheregazer, eine App, die interaktive Sternkarten zeichnet. Im Background werkeln eine MySql-Datenbank und Java Servlets (JSP). Javascript-Codebase ist 2,5 MB groß - puh. Ein Problem beim Erstellen der "Sternenkugel" als SVG war der Zugriff aufs DOM der SVG und deren Manipulation. Das Killer-Javascript-IDE fehlt noch, aber Aptana funktioniert oft schon sehr gut. Eingesetzte Libs: Prototype, Scriptaculous, Dojo für GUI-Elemente. Mangelhaft ist allerdings oft die Dokumentation der Libraries, und die Entwicklergemeinde ist überschaubar.
Der Code hinter Spheregazer ist weitgehend objektorientiert und nach MVC-Logik aufgebaut und daher gut erweiterbar und übersichtlich. Model und View kommunizieren manchmal aber direkt ohne Umweg über den Controller. Daten werden über JSON übertragen. Ein weiteres Problem ist Memory-Management, das keiner der modernen Browser wirklich von Haus aus unterstützt (außer FF3 jetzt); Speicher von Objekten, die dereferenziert werden, wird in der Regel nämlich nicht mehr freigegeben. Und DOM-Knoten sind sehr speicherintensiv. Frage: Geschäftslogik ins Javascript verlagern? Antwort: Ja, ist prinzipiell gut und schnell; nur ob man das will, d.h. ob man die Prozesse öffentlich machen möchte, muss entschieden werden. Dokumentiert wurde mithilfe von JSDOC, und das Projekt soll auch in Zukunft fortgeführt werden.