Lazy und die Probleme mit Closures

Ich habe mich die letzten Tage ausgiebig mit der Klasse Lazy beschäftigt. Was diese alles kann will ich an der Stelle aber nicht ausgiebig erläutern, denn das habe ich hier schon einmal getan. Grundsätzlich sei nur gesagt, dass sie das verzögerte Instanziieren oder Initialisieren einer Klasse ermöglicht. Dabei bietet sie unter anderem die Möglichkeit eine Factory-Methode zu verwenden und genau diese kann uns so manches Problem bereiten.

Weiterlesen »

Datenkonvertierung mit implicit und explicit

Als ich nach Informationen gesucht habe um mein Post zum Thema Exceptions und „as“ zu untermauern, bin ich in der MSDN auf zwei weitere Schlüsselworte gestoßen die ich noch nicht kannte: implicit und explicit Diese Entdeckung hat mich schon etwas verwundert, sind beide doch seit .Net 2.0 Teil des Frameworks aber mir in den vergangenen Jahren noch nie über den Weg gelaufen. Woran das wohl liegt?

Weiterlesen »

NMock vs. NMock 2 vs. NMock 2.0 vs. NMock 3

Open Source ohne Internet ist nicht vorstellbar. Wie sollten sich sonst die Leute finden die die Software entwickeln und verwenden wollen? Leider stellt gerade das Netz den Menschen gelegentlich auch ein Bein. Denn letztendlich fördert es die Anonymität und die Verteilung von Ressourcen auch auf negativem Weg. In Vorbereitung eines Vortrags für die DNUG Leipzig, bin ich über etwas sehr eigenartiges gestolpert. So gibt es vom Isolation Framework NMock nicht nur eine Version sondern derer gleich 4. Nun gut, Versionierung gehört zum Alltagsgeschäft und ist wichtig. Was aber wenn diese Versionen von völlig unterschiedlichen Entwicklern stammen und über das Internet verstreut zu sein scheinen?

Weiterlesen »

„Die Tücken des PrivateObject“ oder „MissingMethodException“

Bei Unit Tests ist es manchmal notwendig auch auf private Member zuzugreifen. Dies kann beispielsweise geschehen wenn man ein privates Feld oder eine Property mit einem anderen Wert belegen will oder wenn eine private Methode mehrfach Fehler lieferte und man sie deshalb separat von ihren öffentlichen Aufrufern testen will. Microsoft bietet für MS Tests deshalb die Klasse PrivateObject an, welche den Zugriff auf jedes private Element zulässt. Naja, auf fast jedes…

Weiterlesen »

Warum Singletons böse sind

Update – Da diese Seite sehr stark frequentiert ist, möchte ich hier noch auf einen anderen Artikel hinweisen, der zeigt wie man einen Großteil der hier beschriebenen Probleme umgeht: http://www.just-about.net/der-freundliche-singleton Googelt man Singletons und .NET wird man sehr schnell auf die folgende oder eine ähnliche Implementierung stoßen. Was in diesem Zusammenhang nicht erwähnt wird ist, dass auf diese Weise erstellte Singletons schnell zum Teufelswerk mutieren. Offensichtlich wird es, wenn man den obigen Suchbegriffen noch ein „evil“ hinzufügt.

Weiterlesen »

Warum Usings innerhalb von Namespaces verwenden?

Vor Kurzem ist mir etwas Interessantes passiert das wunderbar in die Rubrik Aargh passt. Ein Bug der nach langem Suchen einen wunderbaren Erkenntnisgewinn mit sich brachte. Zunächst muss man sagen, dass ich angestachelt von meinem neuen Job auch privat StyleCop in Verbindung mit ReSharper verwende um meinen Code sauberer zu gestalten und um nicht evtl. Konflikte bzw. Inkonsistenzen durch unterschiedliches Vorgehen zu riskieren. Die hierbei verwendeten Regeln verlangen, dass alle usings einer Datei innerhalb des entsprechenden Namespaces zu stehen haben.

Weiterlesen »

Operatorüberladung und die Krux mit null

Am Wochenende konnte ich endlich wieder ein wenig an meinem privaten Projekt arbeiten und bin voll in eine Anfängerfalle gestolpert. Ich arbeite an einer Art Lottozahlengenerator und habe (natürlich) die Lottozahlen in eine eigene Klasse gepackt um Wertebereichsüberprüfung (Lottozahlen können nur zwischen 0 und 50 liegen) o.ä. direkt im Model abzufrühstücken (SoC) wobei die dahinter liegende Architektur natürlich etwas komplexer ist. Nun bringt es eine solche kleinteilige Datenhaltungsklasse mit sich, dass verschiedene Basisfunktionalitäten erneut auszuprogrammieren sind. Wie eben die Vergleichsoperatoren, nur hatte ich dort nicht an das böse Null und die Rekursionshexe gedacht.

Weiterlesen »