ppk on JavaScript Sun, Jun 8. 2008

Peter-Paul Koch (ppk), kannte ich vor allem aufgrund seiner tollen W3C DOM Kombatibilitätstests. Als Leser hat er mich allerdings durch die online verfügbare Einführung seines Buches geködert, dort heißt es:
Obviously, I cannot teach you to use a tool that I myself don't understand. Therefore this book only treats those language features I work with. Object-oriented JavaScript, for instance, is conspicuously absent because I've never seen the need to use it.Äh, wie jetzt? Ein JavaScript Guru der nichts von OO hält? Ähm? Pff, interesting. JavaScript Bücher sprießen zur Zeit (wieder) wie Pilze aus dem Boden, der Konkurrenz hält ppk seine Erfahrungen an "richtigen" Projekten entgegen:
Where other books teach JavaScript using sample scripts that have little value in professional practice, ppk on JavaScript takes you inside eight real-world scripts created for actual, paying clients.Auch das hört sich zunächst recht gut an. Auf die Beispielskripte sollte man vorher unbedingt einen Blick werfen, denn als Ganzes sieht man diese im Buch leider nie wieder.
Wer wie ich Besitzer eines frühen Erstdrucks ist, der darf sich über eine Sammelausgabe freuen oder besser gesagt, wird sich über eine solche ärgern. Denn aufgrund eines Druckfehlers wurde aus dem geplanten "blue book of JavaScript" ein graues - wodurch mitunter die Lesbarkeit der Code-Beispiele leidet.
Inhalt: (detailliert)
- Purpose
- Context
- Browsers
- Preparation
- Core
- BOM
- Events
- DOM
- CSS modification
- Data retrieval
[Form Validation, lines 80-98, condensed heavily]
// els[i] is the form field currently being investigated
var req = els[i].getAttribute('validation');
var reqs = req.split(' ');
for (var j=0;j<reqs.length;j++) {
// run check
}
Für mich bieten solche Beispiele keinen essentiellen Mehrwert zu:
var text = "Hier steht eine Zeichenkette.";
var splitted_string_array = text.split(' ');
Im Gegenteil - erzwingen sie doch oft unnötige Kontextswitches für den Leser. Die Beispielskripte selbst werden nicht mit ihrem Kontext als Ganzes besprochen, sondern dienen vielmehr als praktische Veranschauung für gerade behandelte Eigenschaften, Methoden oder Konzepte. Ein Beispiel zu appendChild()
aus Kapitel 8D auf Seite 368:
I use appendChild() many times in the example scripts. Take, for instance, this function from Sandwich Picker:
[Sandwich Picker, lines 184-186]
function addExtraButton() {
document.getElementById('extraButtonTarget').appendChild(extraButton);
}
Bedingt durch diese Vorgehensweise wirkt auch der Aufbau der Inhalte nicht sehr durchdacht. Die Beispiele in den ersten Kapitel machen reichlich Gebrauch von Methoden oder Konzepten, die erst viel später erklärt werden. Mich störte auch die Art der informellen Einführung von neuen Inhalten; anstelle von Methoden-Signaturen findet man konkrete Anwendungsfälle und oft langatmige Erklärungen, ein Beispiel dazu (aus Kapitel 9A, Seite 424):
W3C's solution is the window.getComputedStyle() method, which works similarly but with a more complicated syntax:
var x = document.getElementById('test');
alert(window.getComputedStyle(x, null).color);
[...]
Wofür das zweite Argument von getComputedStyle()
steht, warum es null ist, bleibt unbeantwortet. Als Entwickler erwarte ich vollständige Signaturen. Letztendlich musste ich im Laufe meiner Leseerfahrung mit dem Buch immer wieder mit mir ringen, überhaupt noch weiter zu lesen. Zu den Stärken hingegen zählen die vielen Hinweise zu Browser-Inkompatibilitäten und Neulinge werden die ausführlichen Erklärungen (recht toll ist z. B. das Kaptel 7 über Events) zu schätzen wissen.
Zum Thema Exceptions noch ein Gustostückerl:
I am not a big fan of try/catch statements, since I don't like executing code that may cause an error.
Wien wartet auf Dich!
Bulletproof Ajax
Web Standards Solutions
Test-Driven Development by Example