Zum Inhalt springen

Just about .Net

It's just a blog about .Net…

Archiv

Tag: Pattern

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.

Continue reading “How-To: Handgefertigtes Bootstrapping & View Handling in WPF” »

… 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 the test expects a 1 as return value of your method, than your first step would be to simply return a 1. Your algorithm will also grow with each test you write and that’s why it is called Test Driven Development. This has also the advantage that the your tests get more robust, they are easier to change and to read, at least in theory.

Continue reading “All I wanted was a pyramid…” »

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.

Continue reading “Dotnet Developers Conference 2012 – Eine subjektive Zusammenfassung” »

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. Continue reading “Pattern, Clean Code & Prism - Vortrag an der HTW-Dresden vom 16.01.2012” »

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 über ExportProvider und App.config in AppDomain laden

MEF Teil 11 – Neuerungen unter .NET 4.5

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 schließe.

An sich finde ich die aktuelle Ausgabe vorallem für Desktopentwickler sehr gelungen. Vorallem die sehr ausführliche Erklärung von Prism und die Beschreibung dessen Praxiseinsatz hat mir sehr geholfen. Dazu kommen dann noch reihenweise Informationen zu IoC-Frameworks. So wird MEF und Unity, sowie Light Core und Structure Map beschrieben. Wer also Interesse daran hat modulare Software zu erstellen und keine Abo hat sollte diesen Monat unbedingt zugreifen, es lohnt sich :)

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.
Continue reading “„Eine Lösung der Lottery Kata“ aka „Data-Driven-Tests mit NUnit“” »

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.
Continue reading “Lazy-Instantiation and the Lazy<T> - class” »

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.

Continue reading “Lazy-Instantiation mit der Lazy<T>-Klasse” »

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.
Continue reading “Der testfreundliche Singleton – Versuch 2.0” »