Refactoring pattern for WPF UserControls

Legacy WPF Code enthält meist eine große Anzahl von UserControls, die ihrerseits massig Logik enthalten weil kein sauberes MVVM verwendet wurde. Um diesen Umstand zu beseitige braucht man aber meist eine gute Testabdeckung um nicht versehentlich etwas kaputt zu machen. In diesem Fall bekommt man dann aber nicht selten schon Probleme das entsprechende UserControl im Test zu instanziieren, weil die InitializeComponents Methode Ressourcen akquiriert die in der Testumgebung nicht vorhanden sind, da diese nicht im GUI Thread läuft. Was also tun? Die InitializeComponents Methode dient im Grunde nur dafür die UI des Controls zu rendern. Ihr interner Aufbau, also die eigentlichen Komponenten und auch das Verhalten des Controls, existieren auch ohne jene Methode. Für Tests brauchen wir InitializeComponents also überhaupt nicht. Um nun aber minimalinvasiv vorgehen zu können, müssen wir uns eine Stelle herauspicken, an der wir das Verhalten des

Weiterlesen »

Wissenschaftliche Untersuchungen zur Codequalität

Das die Art und Weise in der wir Code schreiben direkt dessen Verständnis beeinflusst, kann sich jeder vorstellen der schon einmal Code lesen musste in dem keine sprechenden Variablennamen verwendet wurden. Diese Zusammenhänge sind mittlerweile auch Teil von wissenschaftlichen Untersuchungen. Zwei Paper die sich damit beschäftigen möchte ich an dieser Stelle verlinken.

Weiterlesen »

Dateien für automatisierte Tests bereit stellen

Die berühmten Unit Testing Frameworks werden nicht nur für Unit Tests genutzt, sondern auch für automatisierte Tests allgemein und damit auch für Integrationstests. In diesem Zusammenhang wird es dann schnell notwendig, dass auch eine Reihe von Dateien bereit gestellt werden müssen. Dies endet nicht selten darin, dass jene Dateien während des Tests nicht gefunden werden können weil mal wieder irgend etwas nicht funktioniert. Nachfolgend soll deshalb eine einfache Lösung für diesen Fall aufgezeigt werden.

Weiterlesen »

VSTO: Bilder in Ribbons nutzen

Aktuell habe ich die Ehre ein Excel Plugin zu schreiben. Dieses verfügt über ein eigenes Ribbon, welches möglichst ansprechend aussehen soll. Für mich als Farblegastheniker ist es unmöglich ansprechende Icons zu designen. Dazu kommt, dass die Google Bildersuche schon allein aufgrund der rechtlichen Situation eine eher fragliche Quelle ist. Um nun also möglichst nah am Microsoft Original zu bleiben und somit ein Addin bereit zu stellen, dass sich nahtlos in Office einfügt, gibt es nur eine verlässliche Quelle: Microsoft selbst.

Weiterlesen »

TDD am Beispiel

Bezieht man sich bei der testgetriebenen Entwicklung nur auf die blanke Theorie, so bleiben die eigentlichen Vorteile häufig zu abstrakt. Im nachfolgenden Video wird deshalb eine sehr einfache Code Kata gelöst. Auf diese Weise soll gezeigt werden wie produktiv man mit den entsprechenden Werkzeugen arbeiten kann und wie sehr die so entstandene Testabdeckung bei der Refaktoriserung des Quellcodes hilft.

Weiterlesen »

Win 8.1: Anrufe per Behavior

In einem meiner Posts habe ich darüber geschrieben wie einfach es unter Windows Phone 8.1 ist, einen Anruf zu starten oder eine E-Mail zu schreiben. Da ich diese Funktion nun an mehreren Stellen brauche, habe ich jeweils ein Behavior daraus gemacht. Damit dieses Behavior auch per Blend verwendet werden kann und weil es einfacher zu realisieren ist als attached Behaviors, habe ich es als Blend Behavior gemacht.

Weiterlesen »

Dateien im Solution Explorer verdecken

Der Solution Explorer des Visual Studios zeigt häufig Dateien in einer Hierarchie an, die zu in einer bestimmten Verbindung stehen. So zum Beispiel Dateien die aus anderen heraus generiert werden oder wenn es sich um partial Classes handelt, wie sie zum beispiel bei Xaml üblich sind. Gelegentlich geht diese Abhängigkeitsbeziehung verloren und dann werden diese Dateien „falsch“ im Solution Explorer angezeigt.

Weiterlesen »

Windows Phone 8.1: Mails und Anrufe

Für eine App brauchte ich eine Möglichkeit, dass der Nutzer direkt aus der App heraus Behörden anrufen oder ihnen eine Email schicken kann. Dabei war ich positiv begeistert wie einfach sich diese Funktionalität umsetzen lässt. Grundlage dafür ist immer der Namensraum Windows.ApplicationModel. Von diesem aus kann dann auf die Anruffunktion (Call), die Funktionalität für E-Mails (EMail) oder weitere Dienste (Appointment, Chat, …) zugreifen kann.

Weiterlesen »

Windows Phone 8: Keyboard schließen nach Enter

Ich war etwas überrascht als ich mitbekam, dass es keine Suchbox für Windows Phone gibt, immerhin ist diese ja in Windows 8 enthalten. Andererseits hatte ich mit der unter Windows 8 auch nicht so viel Spaß, da sie kein sauberes MVVM zuließ. Besonders interessant war sie eigentlich für mich auch nur deshalb, da ich nach einer Möglichkeit suchte eine Suche zu starten sobald der Nutzer die Enter Taste betätigt und zeitgleich das Keyboard zu schließen. Dazu eignet sich grundsätzlich auch eine TextBox insofern man etwas Vorarbeit leistet.

Weiterlesen »