[latex]Mae govannen![/latex]
und er mich mit den dämlichen starren Regeln hauptsächlich nervt, meine Produktivität einschränkt und mich zu schlechter lesbaren und wartbaren Code zwingt, anstatt mich auf wirkliche Fehler in meinem Code hinzuweisen. Siehe beispielsweise Type Coercion.
naja, das kann man sicher so oder so sehen (;-).
Sehe ich auch so ;)
Allerdings schadet es meiner Meinung nach in vielen Fällen durchaus nicht, === bzw. !== zu verwenden, insbesondere wenn man mit der Sprache und deren Besonderheiten eben noch nicht völlig vertraut ist. Die automatische Typumwandlung mit unerwartetem Resultat kann hier tw. mehr Schaden anrichten als die Verwendung (unnötiger) strikter Typvergleiche. Insofern gebe ich Crockford zum Teil recht mit seiner Empfehlung, es erst einmal möglichst so zu machen.
Daß er dabei allerdings *weit* (IMO) übers Ziel hinaus schießt (Zwang zu striktem Typvergleich und insbesondere(!) das Entfernen der Option, auch Vergleiche mit Typumwandlung zuzulassen), hat JSLint für mich ziemlich unbrauchbar werden lassen. Neben einigen anderen "Zwangs-Vorgaben", die nicht (mehr) abschaltbar sind. Dadurch erreicht Crockford nur, daß sich die Leute von JSLint abwenden, statt mit dessen Hilfe besseren Code zu schreiben. Restriktives „Do as I say“ war noch nie eine gute Idee.
In meinem Editor habe ich Javascript Lint eingebunden (ist zwar veraltet, für die Erkennung von grundsätzlichen und Flüchtigkeits-Fehlern aber durchaus gut geeignet) und dann lasse ich JSHint nachschauen (wobei _das_ wiederum ein paar Optionen zu viel völlig ausgebaut hat). JSLint schmeißt mir einfach zu viele Fehlermeldungen für Nicht-Fehler, als daß ich mich da noch durchwühlen wollte.
Ich mag beispielsweise generell die "strict whitespace"-Option, weil ich Wert auf einen durchgängig gleichartigen Stil lege. Allerdings ist diese seit einiger Zeit nicht mehr nutzbar, da Crockford auf einmal auf die Idee kam, daß beispielsweise
if (...) {
// Code
}
else {
// Code
}
falsch ist. Jedes Vorkommen dieser Schreibweise wirft vier(!) Fehlermeldungen. Es ist fast unmöglich, die Meldungen, die ich tatsächlich haben möchte, im Wust dieser Falsch-Meldungen noch zu finden.
Ich bin der Auffassung daß die Keywords »if« und »else« auf der gleichen Einrückungsebene zu stehen haben. JSLint akzeptiert aber ausschließlich die schreckliche Schreibweise
if (...) {
// Code
} else {
// Code
}
Warum ist (nicht abschltbar) (function () {})()
falsch und (function () {}())
richtig?
Weshalb ist i++
oder i--
in einfachen Schleifen ein Problem, nur weil ++/-- in ganz bestimmten Situationen in Verbindung mit Minifizierung zu einem werden _kann_? Warum muß ich aufwendige Konstrukte schreiben, wenn ich eigentlich nur ++i
oder --i
verwenden will?
Ein Tool wie JSLint soll mir Fehler und potentielle Probleme melden, aber mir gefälligst nicht den Programmierstil aufzwingen, den Crockford wünscht. Da sage ich dann "Danke, aber nein danke".
Stur lächeln und winken, Männer!
Kai
Dank Hixies Idiotenbande geschieht grade eben wieder ein Umdenken
in Richtung "Mess up the Web".(suit)
SelfHTML-Forum-Stylesheet