How-To: Handgefertigtes Bootstrapping & View Handling in WPF

Ich wurde per Twitter gefragt ob ich mir nicht ein wenig Quellcode einer WPF Applikation ansehen könnte um diverse Tipps zu dessen Verbesserung zu äußern. Statt aber nur aufzuzeigen was mir daran nicht gefällt, habe ich mich daran gemacht zu beschreiben welchen anderen Weg man gehen kann um mehrere Ansichten innerhalb einer WPF Anwendung zu verwalten und diese Anwendung auch noch korrekt zu initialisieren.

Weiterlesen »

All I wanted was a pyramid…

… and all I got was this lousy Christmas tree. I like TDD and I like test automation. It is great to see the application growing with each successful test and to be sure that it will work even if a lot of changes are made on the code base. On the other I see (especially) TDD as a practice which is hard to master and I can understand people who drop any ambition because it feels intricate and some times frustrating in real projects. One of these things is for example the advice to use baby steps to drive the implementation. I thing this advice is essentially to TDD and makes, from my point of view, the difference between Test First and Test Driven Development. Baby steps means, that you are not allowed to implement more functionality than needed by your tests. If

Weiterlesen »

Dotnet Developers Conference 2012 – Eine subjektive Zusammenfassung

Zwei Tage DDC liegen hinter mir. Übermüdet und voller neuer Eindrücke sitze ich nun in einem Regionalexpress nach Dresden der hoffentlich auch irgendwann einmal ankommt, vielen Dank Deutsche Bahn für die bescheidene Anbindung. Gefühlte 95% der Zeit war ich dabei als üblicher Teilnehmer unterwegs. Die einzigen Unterscheidungsmerkmale gegenüber der Allgemeinheit waren das rote Bändchen am Namensschild und der große Aufdruck „Speaker“ auf meinem Poloshirt. Die Insignien der Konferenzelite wenn man so will, welche schnellere Kontaktaufnahme und einige detailliertere Einblicke in die Organisation garantierten.

Weiterlesen »

Pattern, Clean Code & Prism – Vortrag an der HTW-Dresden vom 16.01.2012

Das Semester neigt sich dem Ende, die Vorlesungen sind fast alle gehalten und so ist jetzt eine gute Möglichkeit den Studenten ein wenig Wissen abseits des eigentlichen Lehrplans zu vermitteln. Dank Professor Nestler hatte ich auf diese Weise wieder die Möglichkeit einen Spezialvorlesung an der HTW-Dresden zu halten. Nach dem ich mich beim letzten Mal im Juni vor allem der agilen Entwicklung und dem automatisierten Test gewidmet hatte, ging es dieses Mal um Pattern, Clean Code und Prism.

Weiterlesen »

Fundstück: Sehr ausführliches MEF Tutorial

Ich sitze schon seit einiger Zeit an einem Artikel zum Managed Extensibility Framework, einem IoC-Framework welches zu .Net 4.0 gehört. Nun habe ich ihn gelöscht weil ich im deutschsprachigen Netz ein Tutorial gefunden habe welches das MEF sehr ausführlich beschreibt. Wer sich also über IoC mit .Net – Bordmitteln informieren will und/oder wissen möchte was so alles da drin steckt, sei auf folgende Seite(n) verwiesen. MEF Teil 1 – Grundlagen, Imports und Exports MEF Teil 2 – Metadaten und Erstellungsrichtlinien MEF Teil 3 – Lifecycle beeinflussen und überwachen MEF Teil 4 – Vererbung mit Composable Parts MEF Teil 5 – Composition und Recomposition MEF Teil 6 – Constructor-Injection MEF Teil 7 – Exportieren über eine Class Factory MEF Teil 8 – Eigenen ExportProvider erstellen MEF Teil 9 – Zugriff auf Composable Parts und Metadaten ohne Lazy<> MEF Teil 10 – Parts

Weiterlesen »

Artikel zum Lazy-Pattern in der Dotnetpro 09 / 2011

In der aktuellen Dotnetpro 09/2011 findet sich ein Artikel von mir mit der Überschrift „Faul sein lohnt sich: das Lazy-Pattern richtig einsetzen.“ Darin widmet ich mich weitestgehend dem Einsatz des Lazy Patterns abseits vom bisher für die meisten Leute bekannten Vorgehen des Lazy Loadings bei Datenbankzugriffen. Im Grunde ist der Artikel eine erweiterte Betrachtung dessen was ich bereits über Lazy<T> und die damit verbundenen Probleme hier im Blog geschrieben habe. Dabei erläutere ich natürlich zunächst die Grundlagen des Lazy Pattern, sowie der Lazy<T>-Klasse. Danach widme ich mich der Verwendung des LazyInitializiers, der Klasse ThreadLocal<T> und den möglichen Probleme mit dem Large Object Heap bei Lazy Initialization bzw. Evaluation von sehr großen Datenmengen. Als Beispiel für die praktische Verwendung von Lazy<T>, wird zuletzt noch auf IoC-Frameworks allgemein und das Managed Extensibility Framework im Speziellen eingegangen bevor ich mit einer kurzen Zusammenfassung

Weiterlesen »

„Eine Lösung der Lottery Kata“ aka „Data-Driven-Tests mit NUnit“

Wie letzte Woche versprochen präsentiere ich heute ein mögliches Ergebnis der Lottery Kata. Dabei werde ich klären was es mit parametrisierten und datengetriebenen Tests auf sich hat, wie man sie mit NUnit umsetzt und welche Vor- bzw. Nachteile sich ergeben können. Die eigentliche Umsetzung der Logik ist nur am Rande interessant und wird größtenteils außen vor gelassen.

Weiterlesen »

Lazy-Instantiation and the Lazy<T> – class

I’ve spent the last weeks playing around with MEF which uses a feature of .Net 4.0 I didn’t know before: the Lazy class. A class which gives us a standardized, easy to use and thread safe way for implementing lazy instantiation. Lazy instantiation describes a procedure of creating class instances on demand e.g. when accessing a property. The advantage is that you only invest resources like CPU time and memory if it is really necessary.

Weiterlesen »

Lazy-Instantiation mit der Lazy<T>-Klasse

An english version of this post can be found here: http://www.just-about.net/lazy-t-english Im Zusammenhang mit MEF bin ich auf ein Feature von .Net 4.0 gestoßen, welches mir bisher nicht bekannt war. Genauer meine ich die Klasse Lazy<T>, welche ein standardisiertes und threadsicheres Vorgehen bei Lazy Instantiation bietet. Lazy Instantiation beschreibt eine Art der Instatierung von Objekten, die erst zu dem Zeitpunkt ausgeführt wird wenn auf jene Objekte zugegriffen wird. Ein solches Vorgehen hat den Vorteil, dass unter Umständen Ressourcen gespart werden weil aufwändige Operationen nur wirklich dann angefordert werden wenn man sie benötigt.

Weiterlesen »

Der testfreundliche Singleton – Versuch 2.0

Gestern habe ich bereits ein Post zum testbaren Singleton geschrieben, in welchem ich es mir zur Aufgabe gemacht hatte eine Möglichkeit zu finden Singletons so umzusetzen, dass sie möglichst einfach zu testen und ersetzen sind. Dies ist mir nur teilweise gelungen. Das erste System das ich vorstellte, erlaubte zwar ein Testen des Singletons, nicht aber den Austausch durch ein Fake-Objekt. Die zweite Fassung ermöglichte zwar das Ersetzen und Testen, war in meinen Augen aber zu aufwändig. Dazu kommt, dass beide Systeme dem Entwickler die Freiheit gewähren die tatsächliche Singleton-Funktionalität zu nutzen oder sich einfach selbst eine Instanz der Klasse zu erstellen.

Weiterlesen »