Na das war ja ein turbulentes Wochenende, ich bin gespannt
wie viele sich am Montag verwundert die Augen reiben werden, beim Blick auf den
Kommentar-Counter unter diesem Post ;-).
Bevor ich ihn veröffentlichte habe ich kurz innegehalten und
überlegt, ob ich mir das antun möchte. Denn tief im Inneren bin ich doch auch
Pragmatiker und hatte seit ich mit .NET und C# entwickle, inzwischen ziemlich
genau 6 Jahre, kein Problem mit der Verwendung von null. Warum also dieses Fass
aufmachen?
Doch es hat mich gereizt andere Meinungen zu hören.
Natürlich wollte ich mich in meiner eigenen bestätigt sehen (wer will das
nicht?), aber das letztendliche Ergebnis ist doch noch viel besser: ich habe
anhand der Diskussion meinen eigenen Code in einer Weise bzw. auf einem Level
reflektiert, wie ich es vorher nicht getan habe, und etwas dazu gelernt.
Gleichwohl ich übrigens auch zur Kenntnis genommen habe,
dass nicht alle so vehement gegen die inflationäre Verwendung von null
eingetreten sind, ja viele es nicht anders halten als ich es tue (tat) und
damit in der Praxis augenscheinlich nicht schlecht fahren.
Das lässt mich zu einem anderen Punkt kommen, der am Rande
der Diskussion entstanden ist, der Ruf nach Regeln.
Regeln setzen implizit voraus, dass etwas als richtig oder falsch
definiert wird. Ich bin der
Meinung, dass man dies nicht von oben nach unten (frei interpretierbar ...)
gestalten kann, sondern umgekehrt. Das heißt bevor etwas zur festen Regel wird,
die beispielsweise auch als Ausbildungsinhalt Neulingen vermittelt werden kann,
sollte diese Konsens unter einer kritischen Masse von Entwicklern sein.
Das ist in der realen Welt da draußen nicht anders. Dass man
nicht bei Rot über die Ampel fahren darf ist als Regel nur deshalb akzeptiert,
weil sich jeder Autofahrer bewusst ist, dass er ein unkalkulierbares Risiko für
sich und andere darstellt, wenn er es trotzdem tut. Dass man als Fußgänger
jedoch an einer roten Ampel stehen zu bleiben hat, interessiert bisweilen
niemanden (wer mal in Manhattan zu Fuß unterwegs war, weiß was ich meine) – in
diesem Fall nützt die Regel also nicht, weil unter Fußgängern scheinbar kein
Konsens darüber herrscht, dass es Sinn macht sie zu befolgen.
Die Regeln können also nicht einfach von irgendwem
festgelegt werden, es muss ein Konsens entstehen. Dieser Konsens kann meiner
Meinung nach nur durch einen regen Austausch unter Entwicklern und aus ihren
Reihen heraus entstehen, natürlich auch angetrieben durch (kontroverse)
Meinungsäußerungen von Leuten, die vorweg gehen/denken.
Doch auch dann kann mit den durch den Konsens geschaffenen
impliziten Regeln immer noch niemand von sich behaupten, die Wahrheit gepachtet
zu haben. Denn die ist durchaus vielschichtig.
Ich sage das, weil ich sicher auch noch ein Stück der
pragmatische Entwickler aus einer Prägung durch mein Umfeld heraus bin – ich
kenne also die vielen anderen „Wahrheiten“.
Dabei muss ich jetzt aber gar keine persönlichen Geschichten
erzählen, wir alle können uns am Beispiel von .NET bzw. ASP.NET praktische
Beispiele an Sperrfeuer von Microsoft in Form der „0-Zeilen-Code-Demo-Wunder“
vor Augen halten, mit denen die Marketingabteilung the next big
thing anpreist.
Und: so daneben liegen sie damit auch nicht immer. Viele
klicken sich ihre Anwendungen wild zusammen und erreichen damit ihre Ziele. Es
ist nicht so, dass der Verzicht auf Schichtentrennung und die Verwendung von
SQL-DataSource unweigerlich in die Hölle führen. Auch wenn das gerne so
dargestellt wird.
Und so ist es auch und vor allem auch bei weniger
offensichtlich schlimmen Dingen wie der Verwendung von null. Natürlich spricht
sehr, sehr viel dafür, es (fast) nicht zu nutzen (dem ich mich nun anschließe),
aber wenn man es trotzdem tut: so what?
Machen wir uns nichts vor: nur weil wir versuchen es
„richtig“ zu machen und „cleanen“ Code zu schreiben und „cleane“ Applikationen
zu entwickeln, macht uns das auch wirklich zu besseren Entwicklern?
Ich würde sagen: it depends ...