Als ich heute mit der Telekom telefonierte, fragte mich der Call-Center-Agent beiläufig, ob ich nicht auch gerne ein Telefon haben möchte, um das mich alle beneiden würden. Ich musste das iPhone dann aber dankend ablehnen, hatte ich schließlich gerade mein sehnlich erwartetes HTC Desire vor mir liegen, dass darauf wartete ausgepackt zu werden.
Dass ich das Desire überhaupt bestellt habe, hat vielerlei Gründe. Zum einen, dass mir Apple mit seiner Politik einfach auf den Wecker geht. Die ...
Vor etwas über einem Monat habe ich meinen ganz eigenen aktuellen "test driven way" vorgestellt. Inzwischen ist die im Screenshot des Testrunners dargestellte Zahl der Tests auf an die 300 gewachsen. Eine nette Zahl, doch ich bin mir sicher bei Abschluss des Projektes (Release) wird sie gut 4-stellig sein.
Eine müßige Angelegenheit, mag man meinen - wenn man sich vorstellt, dass man jeden Test einzeln im vorgestellten Format von Hand tippt:
1:
2: [TestFixture]
3: ...
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 ...
Na da habe ich ja was ausgelöst heute Morgen ;-). Grundsätzlich ist das Feedback richtig und ich denke auch, dass hier ein allgemeiner Konsens herrscht. Hätte ich die Anwendung, für die ich das Problem vermeintlich gelöst habe, auch einmal live ausgeführt, hätte ich den Code so wahrscheinlich auch nie veröffentlicht, da es mit dem Null-Result schon bei der ersten Verwendung gekracht hätte (übrigens ein netter Nebeneffekt loser Koppelung und der test-getriebenen Entwicklung: ich schraube ...
Neulich bin ich nach langem Grübeln und einigem Hin- und Her für mich zu dem Schluss gekommen, dass Repositories für mich in den allermeisten Fällen nicht testwürdig sind. Ganz glücklich war ich mit diesem Ergebnis nicht, aber irgendwann muss man ja auch einmal einen Platz im Dorf für die Kirche finden, um sie dann da stehen zu lassen – zumindest für das aktuelle Projekt. In den Kommentaren regte sich Widerspruch, insbesondere Stefan brachte mich dann auf die „richtige Spur“.
Das ...
Um Abhängigkeiten und unerwünschte Seiteneffekte zu vermeiden setze ich bei meinen Repositories in aller Regel darauf diese nach außen hin abzugrenzen. Das bedeutet, dass ich beispielsweise auf IEnumerable<> verzichte und stattdessen immer List<> verwende.
Das hat zwar auch ein paar Nachteile (Kein Austausch der Implementierung im Vgl. zu IList<>, kein Lazy-Loading usw.) aber eben auch Vorteile - insbesondere den, dass alle Queries gegen die Datenbank ausgeführt werden, ...
Wie ich aktuell test-getrieben entwickle habe ich kürzlich in diesem Post beschrieben. Was ich darin verschwiegen habe ist, wie ich meinen Datenzugriff teste.
Den Zugriff auf die Daten einer Anwendung kapsele ich in Repositories. Dies verhindert Abhängigkeiten zu und von anderen Teilen der Anwendung und sorgt für eine 100% einwandfreie Trennung, da alle anderen Komponenten nur gegen ein Interface arbeiten:
1: public interface ICompanyRepository
2: {
3: ...
Ich muss ja gestehen, dass ich mit meinem iPhone 3G, von der Geschwindigkeit abgesehen, wirklich noch sehr zufrieden bin. Aber mir geht Apple auf den Keks. Ich erinnere an Jobs letzte Auslassung "Wer Porno auf dem Handy haben möchte, soll Android benutzen.". Nun brauche ich keine Pornos auf meinem Telefon, aber es geht ums Prinzip: wenn ich es denn doch wollte, hätte ich gerne die Gelegenheit dazu. Ich möchte mir weder von irgendwelchen prüden Amerikanern noch von Taliban vorschreiben lassen, ...
Da zu lang für einen Tweet, muss das Blog kurz als Ventil herhalten.
DPD
Der erste Zustellversuch scheiterte daran, dass wir etwa eine halbe Minute brauchten, um an die Gegensprechanlage zu gehen. Der Fahrer schrieb seinen Zettel und fuhr wieder. Am nächsten Tag klappte die Zustellung. Reichlich erschöpft übergab er mir dann nach einem Aufstieg von 4 Stockwerken ohne Aufzug das Paket. Nichtsahnend öffnete ich es dann einen Tag später. Nachdem ich das "Vorsicht Glas!"-Klebeband aufgeschnitten ...
Ist doch selbstverständlich, oder? Scheint nicht so, zumindest nicht, wenn man den vielen Ansätzen von Microsoft folgt. Da gibt es seit ASP.NET 1.0 die Validation Controls für WebForms und mit ASP.NET MVC hielt eine Validierung über DataAnnotations Einzug. Letzteres ist auch verdammt sexy, da die Konfiguration über Attribute wirklich schön sauber ist. Deshalb habe ich es im ersten MVC-Projekt auch versucht zu verwenden.
Mir ist das Ganze aber ziemlich schnell auf die Füße gefallen. Von ...