Nach hinten offen… OCP für Einsteiger

Nicht selten begegnet einem in gewachsenen Projekten Quellcode wie dieser:

if (this.Known)
{
  if (this.Age >= 18)
  {
    if (this.Gender == 0)
    {
      switch (this.Status)
      {
        case Status.Married:
          result = "{0} is a known male married adult.";
          break;

Was hier passiert ist leicht beschrieben: Verschiedene Eigenschaften einer Klasse bestimmen ihr Verhalten, das in einer Form von den Eigenschaften abhängig ist, so dass ein Entscheidungsbaum scheinbar die einzige Möglichkeit ist, der Sache Herr zu werden.

Softwareentwickler kennen auch die Probleme, die daraus entstehen: Die Komplexität steigt bei gleichbleibend sinkender Wartbarkeit. Der Code lässt sich irgendwann schlicht und einfach nicht mehr überblicken. Neue Verhaltensweisen hinzuzufügen erscheint ohne vorhergehende Impact-Analyse kaum machbar und falls doch ausprobiert endet es in der Regel in einem Desaster.

Die im Titel dieses Beitrages erwähnte Abkürzung OCP beschreibt dabei die Lösung mit drei simplen Worten: Open Closed Principle. Ausgesprochen steht das für “Eine Klasse soll offen für Erweiterungen aber geschlossen gegenüber Veränderungen sein”. Das ergibt soweit Sinn und klingt nach einem erstrebenswerten Ziel.

Mehr ins Detail dazu gehen verschiedene Webseiten, darunter allen voran natürlich Wikipedia, aber auch z.B. cleancodedeveloper.de.

TOP TECHNOLOGIES Learn & Research Labs

Da die meisten Beispiele aber eher steril daherkommen und strukturell auch so einfach gehalten sind, dass jeglicher Realitätsbezug fehlt, hat die TOP TECHNOLOGIES auf codeplex ein Projekt veröffentlicht, das im ersten Anlauf genau dieses Thema aufnimmt und anhand einer Virtual Lab Dokumentation das Open Closed Principle Schritt für Schritt erläutert. Dabei wird der Leser an die Hand genommen und zunächst durch ein Negativbeispiel geführt, um dann über ein schrittweises Code-Refactoring zu einer vollständigen OCP-Lösung zu gelangen.

Der Dokumentation liegt eine komplette Visual Studio 2012 Solution bei, die als Grundlage dient und auch als Zip-Archiv von der Quellcodeverwaltung entkoppelt heruntergeladen werden kann.

Am Ende des Labs angekommen hat der Entwickler das Open Closed Principle verstanden und kennt auf Basis des sog. Strategy Patterns eine Möglichkeit, es umzusetzen. Ein wenig Experten Know How rundet das Thema noch zusätzlich ab.

Wir freuen uns auf Feedback und hoffen, dass das Thema Anklang findet! Geplant ist, das Projekt um weitere Themen zu ergänzen; gerne nehmen wir auch Vorschläge auf!

Das war die Visual Studio 2012 Evolution

... oder hat sie gerade erst begonnen?

Am 1.10.2012 fand in Düsseldorf der Visual Studio 2012 und .NET 4.5 Launch-Day statt. Dabei habe ich mich sehr darüber gefreut, dass die Entscheidung über die Art der Veranstaltung gegen einen virtuellen Launch und zugunsten einer Präsenzveranstaltung fiel.

Die Zahl der Teilnehmer, die es am Montag nach Düsseldorf geschafft haben, floatet - je nachdem, wen man fragt - zwischen 550 und 700 Personen. Aber auch ohne sich an der genauen Teilnehmerzahl aufzuhalten: Die kostenlose Veranstaltung war "ausverkauft", die Konferenzräume waren voll und das Interesse des Publikums an den Themen hoch.

Alles Neue...

Neuerungen im Visual Studio 2012 und auch .NET Framework 4.5 standen naturgemäß im Vordergrund und wer im Sommer die eine oder andere Roadshow zu den Themen besucht hat (damals hieß es noch "Visual Studio goes to 11"), der wird auch viel Bekanntes vorgefunden haben. Grandios waren dabei aber auch Sessions zu beispielsweise Azure, bei der Dariusz Parys u.a. ein End-To-End Szenario von der Implementierung einer ASP.NET MVC Applikation, über die Quellcodeverwaltung im TF Service auf tfspreview.com bis hin zur Build Automation in der Cloud und dem Continuous Deployment nach Azure präsentiert hat. Azure for Website ist übrigens kostenfrei.

Frank Prengel hat wie erwartet die Fahne für Windows Phone 8 hochgehalten während Chris Binder und Neno Loje  fast schon mit Show-Charakter sehr unterhaltsam demonstriert haben, was passiert, wenn Microsoft nicht nur Drag & Drop im Web für sich entdeckt, sondern der "Kunde" auch noch den Weg auf die entsprechenden Slides von Microsoft findet: PowerPoint Storyboarding, TFS Dashboard, Exploratives Testen und der neue Feedback Client führen zur effizient arbeitenden Teams und resultieren damit in (hoffentlich) noch coolerer Software (und wenn schon nicht sexy, dann doch wenigstens qualitativ hochwertiger; die Erkenntnis, dass Softwareentwickler keine Designer sind, läßt sich spätestens seit der Einführung von WPF kaum mehr ignorieren). Und wer sich gewundert haben sollte: Natürlich sprechen Scrum-Entwickler nicht von Burnout Charts sondern von Burndown Charts. Sollte dieser freudsche Versprecher in den Webcasts herausgeschnitten werden, freue ich mich schon jetzt auf die Outtakes.

Die TOP TECHNOLOGIES hatte zudem das große Vergnügen, dem interessierten (und zahlreich erschienenen) Publikum Neues zum Thema Unit-Testing und dem Microsoft Fakes Isolation Framework näher zu bringen. Auf diesem Blog gab es schon den einen oder anderen Artikel dazu und in einer der kommenden Ausgaben der dotnetpro wird dazu noch ergänzendes Material veröffentlicht. Spannend ist neben der Unterstützung von Async & Await in Unit-Tests beispielsweise die Integration von 3rd Party Frameworks (und das bezieht sich zumindest theoretisch auf alle Frameworks), und die direkte Integration von Fakes in das Visual Studio. Somit steht dem Entwickler erstmals ein leistungsfähiges Mocking Framework ab Werk zur Verfügung. Einziger Wehrmutstropfen ist die Beschränkung auf die Ultimate Edition. Aber es hat ja auch ein paar Versionen gebraucht, bis das Unit Testing auch in die Express Versionen Einzug gefunden hat.

Quaterly Updates

Eine Änderung in dem Entwicklungsmodus der Microsoft läßt daher Hoffnung zu. Da das Developer Team intern ebenfalls nach Scrum arbeitet und in kurzweiligen Zyklen Features fertigstellt und Bugs behebt, werden Entwickler nun nicht mehr auf Major Releases alle paar Jahre angewiesen sein (oder sich auf unregelmäßige Powertools freuen), sondern von vierteljährlich erscheinenden Updates profitieren können. Dabei plant Microsoft diese bereits vor dem Release als CTP der interessierten Community zur Verfügung zu stellen. Während diese zwar nicht für den produktiven Einsatz empfohlen werden, nutzt Microsoft sie intern sehr wohl produktiv. "Eat your own dogfood" lautet da das Credo.

Das erste CTP für das geplante November Update ist bereits verfügbar, bereitet bei der Installation allerdings noch die eine oder andere Schwierigkeit. Lohnen tut sich der Blick darauf dennoch, wie ein Blogeintrag von Brian Harry zeigt.

Wer sich das Visual Studio 2012 und den dazugehörigen Team Foundation Server (oder auch gefahrlos das aktuelle CTP) genauer anschauen möchte, dem sei der kostenfreie ALM Hyper-V Server empfohlen, den man bei Microsoft hier herunterladen kann. Optimal ist der Einsatz in einem Hyper-V Server unter Windows 8, der sich als Feature problemlos nachinstallieren läßt; die Einbindung der virtuellen Maschine gestaltet sich zum einen problemlos und ist zum anderen optimal dokumentiert. Ergänzend findet sich in dem Archiv eine große Anzahl detaillierter Hands-On Labs, die einladen, alle Features einfach mal auszuprobieren. 

Alle, die leider nicht an dem Event teilnehmen konnten, werden sich übrigens darüber freuen, dass alle Sessions aufgezeichnet wurden und in ca. zwei Wochen als Webcasts zum Download angeboten werden.

In diesem Sinne: Viel Spaß und Erfolg mit Visual Studio 2012!

Die Evolution hat begonnen!

 

Visual Studio lautet die Frage.

42 lautet die Antwort. Das ist die Anzahl der Pixel, die Microsoft durch die UI-Verschlankung in der Höhe eingespart hat. 42 Pixel mehr, um zwei weitere Zeilen mit Code einblenden zu können. Vergessen wir allerdings einmal kurz diese zwei Zeilen und wenden uns der gesamtheitlichen Frage nach der Veränderung der UI zu.

[…] the cut, copy and paste toolbar commands have been removed since we know from our instrumentation data that the majority of developers use the keyboard shortcuts for these commands.

Instrumentation data ist hier das Stichwort. Microsoft macht nichts einfach so. Niemals. Icons werden nicht einfach verändert, weil es eine neue Doktrin gibt (auch wenn sie Metro heißt). Schaltflächen werden nicht einfach entfernt, weil irgendein Mitarbeiter meint, das wäre besser so.

For example, during usability studies with the new toolbar settings, many users have noticed the Navigate Forward and Backward buttons and have assumed that this was new functionality added to the product when in fact this capability has been in the product for a number of releases.

iconographyUsability studies. Instrumentation. Zu Deutsch: Microsoft fragt uns Entwickler. Sie sammeln Daten über unser Nutzungsverhalten (wenn wir das akzeptieren; und wer kennt den Toast, der einen nach der Installation des Visual Studio 2010 danach fragt, nicht?). Und nach der Analyse kommt die Feststellung: Die Icons sind zu bunt, die Linien und Gradienten zu auffällig, die Anzahl der Schaltflächen zu hoch und das führt dann halt dazu, dass die UI einer Schönheitskurz unterzogen werden muss.

Schönheit liegt dabei zwar im Auge des Betrachters, aber wenn jemand bei Microsoft so viel Humor hat, dass die Antwort auf alle diese Fragen 42 lautet, dann kann ich mich nur darauf mit einem Schmunzeln freuen. Und an alles andere werden wir uns mit der Zeit sowieso gewöhnen.

Im Visual Studio Blog gibt es eine enorm umfangreiche Übersicht über Änderungen und Verbesserungen, inkl. Screenshots und Erläuterungen zu den Hintergründen. Wer mehr wissen will, klickt hier.

Über die Autoren

Christian Jacob ist Leiter des Geschäftsbereiches Softwarearchitektur und -entwicklung und zieht als Trainer im Kontext der .NET Entwicklung sowie ALM-Themen Projekte auf links.

Marcus Jacob fokussiert sich auf die Entwicklung von Office-Addins sowie Windows Phone Apps und gilt bei uns als der Bezwinger von Windows Installer Xml.

Martin Kratsch engagiert sich für das Thema Projektmanagement mit dem Team Foundation Server und bringt mit seinen Java- und iOS-Kenntnissen Farbe in unser ansonsten von .NET geprägtes Team.

Aktuelle Kommentare

Comment RSS