A Blog about C#, Clean Code, and Refactoring

  • ModeDetector vs. Precompiler Directives

    Disclaimer: This solution does not apply to multi-framework targeting. The problem Regularly, I do a lot of refactoring, which means renaming classes and methods. Tools help a lot to rename dependencies and all dependent code. But sometimes, tools cannot determine the correct refactoring for commented-out code. But why care about commented-out code? Because code, which […]

  • ContextFor<> zum Testen des SUT

    In meinen Projekte der letzten Jahren ist mit der Zeit eine Hilfsklasse fürs Testen entstanden. Das Problem war das Erstellen des SUT mittels Konstruktor, welcher bei Dependency Injection entsprechend viele Paramter hat oder haben kann. Hier ein Beispiel mit „nur“ 5 Konstruktor Parameter. Dadurch ist Builder entstanden, welcher für jeden Konstruktor Parameter des SUT ein […]

  • Dictionary ohne KeyNotFound-Exception

    Derzeit arbeite ich mit dem DevExpress DataGrid für WPF und erstelle die Spalten dynamisch, auf der Basis des Datenbankmappings. Dabei greifen die Daten auf normale Properties, aber auch Felder in einem Dictionary zu. Problem: Nicht jedes Feld aus dem Mapping z.B. „title“ hat auch in dem Dictionary einen entsprechenden Schlüssel. Das DataGrid, bzw. das Binding […]

  • Comic – The Story Of DI

    Comic – The Story Of DI

    Für einen Vortrag über Dependency Injection ist eine kleines Comic entstanden. Der Vortrag ist eine Einführung in Dependency Injection, Interfaces, Injection Types und Lifetime Scopes. Er dient als Vorbereitung für eine Einführung und Vertiefung in Autofac, dem vielleicht nächsten Comic Strip, hier beim Code Quality Coach. Das Comic findest du auf GitHub – The Story […]

  • Refactoring I – Die Endlosschleife

    Refactoring I – Die Endlosschleife

    Das Refactoring von Code ist laut Wikipedia eine Umstrukturierung von Codes ohne eine funktionale Veränderungen der Software aus Anwendersicht. Es werden nicht-funktionale Anforderungen wie Wartbarkeit, Lesbarkeit, Erweiterbarkeit und weitere *-keiten verbessert. Refactoring kann beispielsweise durch Implementierung eines Plugin Mechanismus stattfinden. Das System wird aber im Rahmen des Refactorings nicht erweitert, sondern allenfalls bestehende Komponenten auf […]