Mittwoch, 16. April 2008

Nachschlagewerk für .NET

Ein interessantes Projekt gibt es hier http://www.dotnet-blogbook.com/ das Blogbook wird regelmäßig aktualisiert mit festen Releaseterminen in frei zugänglicher PDF Form. Es ist eine Art Mix aus Einsteigerwerk, Codeschnipselsammlung und Kochbuch. Also irgendwie ähnlich zu unserem Blogprojekt nur das es mehr auf Grundlagen eingeht 8)

Man muss sicherlich nicht mit jeder Wertung der Autoren einverstanden sein, z.B. wer schon zu faul ist ein IClonable als Shallow oder Deep Implementierung zu dokumentieren, wird sich wohl kaum dazu aufraffen eigene, aussagekräftigere Interfaces zu definieren. Meiner Meinung nach etwas zu idealistisch gedacht. Faulheit von Entwicklern sowie Nullakzeptanz von Geldgebern gegenüber Dokumentationsaufwänden kann man so nicht erschlagen. Mal abgesehen davon das es eine nicht unerhebliche Menge an Entwicklern gibt die davon noch nie gehört haben meiner Erfahrung nach und wohl eher dazu tendieren ein gedankenloses copy and paste durchzuführen. Allein schon aus diesen Fakten resultieren kann man davon ausgehen das es sich zumeist um ein Shallow Copy handelt, wer sich den Aufwand um ein Deep Copy macht wird auch eher sich dazu hinreissen lassen es in der Doku zumindestens als solches zu kennzeichnen.
Ein weiterer Kritikpunkt, der mir persönlich etwas sauer aufstößt, ist dass ab und an eine Prosa Luftblase eine Erklärungen als Antwort auf das Warum ausspart. das ein paar Grundlagenerklärungen fehlen um sich selbst das "Warum" zu beantworten (siehe dazu Kommentare und meine Ausführungen zu Anonyme Typen).

Das (Blog)Buch ist absolut interessant und so ein Projekt immer würdigenswert! Die festen Releasetermine machen Hoffnung auf mehr. Ich finde es gut geeignet für Quereinsteiger und Anfänger mit Grundkenntnissen. Auch für Fortgeschrittene ist so einiges sehr nützlich. Profis hingegen werden nicht viel damit anfangen können.

2 Kommentare:

Anonym hat gesagt…

Hallo,
vielen Dank für die Verlinkung.

Zu den Kritikpunkten: Grundsätzlich finde ich es gut, dass auch Kritik angesprochen wird. Dies gibt uns die Chance, das BlogBook weiter zu verbessern.

Zum Thema ICloneable: Es ist ja so, dass man Eigenheiten etc. nicht von einem Tag auf den anderen ändern kann. Wenn nur ein paar Entwickler, die diesen Punkt lesen ihr Verhalten ändern, ist schon vieles gewonnen. Jeden davon zu überzeugen ist ohnehin illusorisch.

Zur Prosa Lustblasen: Könntest du mir ein entsprechendes Beispiel geben? Dann kann ich mir vermutlich besser vorstellen, was genau du meinst.

Zur Zielgruppe: Dass Profis damit nichts anfangen können würde ich nun so nicht unterschreiben. Meistens ist ein Entwickler Profi auf einem Gebiet, sicherlich nicht auf allen, die vom .NET BlogBook abgedeckt werden. D.h. es ist durchaus Content für alle vorhanden.

Tropensturm hat gesagt…

Hallo,
vielen Dank für den Kommentar :D

ICloneable: ja das sind die Dinge die einem im Entwicklerleben ständig begegnen und man nicht nachvollziehen kann wieso so viele wie z.B. bei ICloneable nicht dokumentieren können. Als ich mit dem Studium fertig war ist mir genau das passiert, ich dachte ich könnte immer so sauber programmieren durch "sprechende Interfaces" und ordentlich dokumentieren. Fakt ist das dies erst einmal zu Auseinandersetzungen geführt hat in der Art: "Wieso hat das so lange gedauert?", "Ist doch nur ein Prototyp", etc. Außerhalb der Projektphase ernte ich durchaus Zustimmung, aber innerhalb siegen viel zu oft Hetze und ein "reichen wir nach" Gedanke.
Darum meine Anmerkung idealistisch. Idealistisch ist nicht negativ gemeint, sondern ich meinte das es unglaublich schwer ist so etwas durchzusetzen und setzt man es durch ist man oft das gesamte Projekt lang damit beschäftigt sich zu rechtfertigen, was mich nicht abhält es dennoch zu tun. Aber meine Erfahrungen sind in der Branche von doch sehr negativer Natur diesbezüglich. Dokumentation und sprechende Namen sind eine Seltenheit. Ich kenne ein paar Firmen die so etwas sauber und rigoros durchziehen, aber sie bleiben irgendwie eine Minderheit.

Prosablase: Ersteinmal sollte ich den Ausdruck revidieren, ich habe die Stellen noch einmal überflogen die mir etwas sauer aufgestoßen sind und würde lieber das umformulieren in "unzureichend erklärt". Mein Hintergedanke war dass das Buch auch Einsteigerfreundlich gehalten ist. Und selbst ein Fortgeschrittener Anwender wie ich liest das durch und denkt sich, ach das hab ich doch schon mal gehört, aber noch nie angewendet bzw. gesehen und dann fehlt mir ein etwas mehr Erklärung.

Ich ziehe als Beispiel einmal "Anonyme Typen" heran. Mir blieb im Kopf der Satz "... Unter dem obigen Gesichtspunkt sollte aber durchaus klar sein, wann eine Verwendung sinnvoll ist und wann weniger...". Das war mir nämlich erstmal ganz und gar nicht. Da habe ich erstmal wieder an meine Studienzeit gedacht und da fiel mir ein das sich so mancher in seiner Arbeit einer solchen Floskel bediente wenn er nicht wirklich das "Warum" erklären konnte, daher vorschnell der Begriff "Prosablase".
Jetzt habe ich mir das aber noch einmal durchgelesen und muss es revidieren! Es war nur nicht so ganz klar für mich persönlich formuliert und es fehlte etwas an Grundlagen die ich mir dazu wünschen würde.
Anonyme Typen werden vom Compiler implizit typisiert, das ist im Buch mit Inline umschrieben, was mir aber diese Assoziation nicht gleich vermittelte, da für mich Inline erstmal etwas vorhandenes repliziert und nicht unbedingt assioziert, aber über Begriffsdefinitionen will ich nicht streiten, es hat mich schlicht irritiert.
Auch war mir nicht sofort auf Anhieb klar das diese Anonymen Typen ein eigener Referenztyp von Object sind mit einem eingeschränkten Methodenumfang (hätte ich mir den Screenshot besser angesehen, oder es einfach mal schnell ausprobiert). Bedenke ich diese Überlegungen jedoch, werden die Problemematiken für mich viel deutlicher. Ich habe keine Möglichkeit zur Codezeit also auf den expliziten Typ zuzugreifen. Auch wenn man die Objekte umfangreicher verwenden möchte bleibt einem kaum ein Cast nach Object erspart was die Verwendung etwas ad absurdum führt. Und mit diesem Wissen erst, wird mir nun sehr deutlich bewußt warum der sinnvolle Einsatzbereich von Haus aus stark limitiert ist. Das schreibt auch Microsoft in seine MSDN das man doch bitte seinen eigene Struktur/Klasse verwenden soll. Ich gehe sogar soweit zu vermuten, das dieser anonyme Typ im Zuge von LINQ gedacht wurde. Ich sollte noch dazu erwähnen das ich als erstes an Python denken musste und Assoziationen dorthin gezogen habe, die so gar nicht existierten.