Publikumsaufgabe für den 09. März 2010
Publikumsaufgabe als pdf herunterladen
Um die Präsentation der Clean Code Developer Prinzipien und Praktiken spannend und realitätsnah vorzuführen, soll das anhand von Beispielcode geschehen, den die Referenten des dotnetpro.powerday nicht selbst vorbereitet haben. Der Beispielcode soll vielmehr aus dem Publikum stammen und somit „das richtige Leben“ widerspiegeln. Sie haben also die einmalige Möglichkeit, den Referenten das Bühnenleben schwer zu machen. Stellen Sie Stefan Lieser und Ralf Westphal auf die Probe. Nehmen Sie an der Publikums-aufgabe teil! Das sorgt nicht nur für Spannung auf der Bühne, sondern kann Ihnen auch einen von drei wertvollen Preisen einbringen. Unter den Einsendern einer Lösung für die Publikumsaufgabe verlost die dotnetpro:
- ReSharper plus dotTrace
- ReSharper
- Targus Notebook Tasche
Und was müssen Sie dafür tun? Melden Sie sich zum www.dotnetpro-powerday.de am 09. März 2010 an und implementieren Sie eine Visual Studio 2005/2008 Solution für folgendes Szenario:
Abhängigkeitsanalyse von Visual Studio Projekten
Gesucht ist ein Programm, dass die Abhängigkeiten/Referenzen zwischen Projekten in einer Visual Studio Projektmappe analysiert. Input ist der Pfad einer .sln-Datei, Output ist eine Darstellung der Abhängigkeiten. Das Programm soll ein WinForms- oder WPF-Frontend haben und aus nur einer EXE bestehen, die Sie selbst realisieren. Abhängigkeiten zu 3rd Party Bibliotheken sind erlaubt, sofern diese erstens lizenzrechtlich unbedenklich sind und zweitens keine separate Installation voraussetzen. Das Ergebnis der Übersetzung der Projektmappe soll ein Verzeichnis sein, in dem das komplette Programm mit allen nötigen Assemblies zu finden ist und aus dem es gestartet werden kann (xcopy-Deployment). Nachstehend einzelne Features der Lösung in unterschiedlichen Ausbaustufen. Schauen Sie, wie weit Sie dabei kommen. Zur Teilnahme ist es nicht erforderlich, alle Features zu implementieren. Picken Sie sich heraus, was Sie mögen. Aber Achtung: Je mehr der folgenden Features Sie implementieren, desto höher ist Ihre Chance auf einen Preis! Jedes Feature ist dafür mit einer Punktzahl versehen. Sie nehmen mit so vielen „Losen“ an der Preisverlosung teil, wie Sie Punkte fehlerfrei implementiert haben.
Ausgeben: (4 Punkte)
- Stufe 1: Anzeige der Abhängigkeiten in einem TreeView. Unabhängige Projekte/Assemblies sind unter abhängigen eingeschachtelt. (1 Punkt)
- Stufe 2: Visualisierung der Abhängigkeiten in einem Diagramm. Jede Assembly kann durch ein Rechteck repräsentiert werde, jede Abhängigkeit durch einen Pfeil von der abhängigen zur unabhängigen. (3 Punkte)
Analysieren: (4 Punkte)
- Stufe 1: Nur die Abhängigkeiten zwischen Projekten sollen analysiert werden. (1 Punkt)
- Stufe 2: Über die Abhängigkeiten zwischen Projekten hinaus sollen auch die Abhängigkeiten in Assemblies berücksichtigt werden, die von diesen Projekten aus referenziert werden, also nicht selbst als Projekt vorliegen. (3 Punkte)
Visualisieren: (4 Punkte)
- Stufe 1: Alle Abhängigkeiten werden gleich visualisiert (1 Punkt)
- Stufe 2: Zwischen binären Referenzen und Projektreferenzen unterscheiden, d.h. Kennzeichnung der Knoten als Binary bzw. Project. (1 Punkte)
- Stufe 3: Berücksichtigen und kennzeichnen von zirkulären Abhängigkeiten (2 Punkte)
Filtern: (3 Punkte)
- Stufe 1: Keine Filterung (1 Punkt)
- Stufe 2: Filtern von anzuzeigenden Assemblies/Projekten mit Wildcard * (am Anfang und/oder Ende eines Dateinamens) (1 Punkt)
- Stufe 3: Filtern mit Regulären Ausdrücken (1 Punkt)
Bonusfeatures: (7 Punkte)
- Speichern/laden einer Analyse (2 Punkte)
- Unterschiede zwischen zwei Analysen derselben Solution anzeigen (DIFF) für den Fall, dass die Solution zu unterschiedlichen Zeiten analysiert wurde. (5 Punkte)
Zum Schluss die entscheidende Erleichterung für Sie: Programmieren Sie Ihre Lösungen nicht sauber! Rotzen Sie Ihren Code raus. Seien Sie ein Cowboy-Programmierer. Hauptsache Ihr Programm funktioniert. Irgendwie. Na, wie ist das? So machen Sie es den Referenten nämlich besonders schwierig. Nutzen Sie die Gelegenheit!
Organisatorisches
Alles klar? Wenn nicht, dann stellen Sie Ihre Fragen in der Clean Code Developer Diskussionsgruppe und kennzeichnen sie ihre Beiträge mit [powerday]. Dort können wir dann Unklarheiten ausräumen, so dass auch andere Teilnehmer etwas davon haben. Wenn Sie schließlich zufrieden mit Ihrer Lösung sind, verpacken Sie sie in eine ZIP-Datei und schicken sie diese an info@prodevcollege.de. Vergessen Sie nicht Ihren Namen und Ihre Anschrift in der Email zu nennen. Nur dann kann Ihre Einsendung Ihrer Anmeldung zweifelsfrei zugeordnet werden.
Einsendeschluss ist der 19. Februar 2010. Die Verlosung erfolgt unter allen Einsendungen. Auf der Bühne stellen Stefan Lieser und Ralf Westphal allerdings nur eine Lösung vor. Wahrscheinlich die, mit der Sie es am schwersten hatten, sie zu verstehen. Sie dürfen dann gespannt sein, was die beiden daraus machen. Ob sie es wieder schaffen, das Brownfield des Codes in eine blühende Wiese zu verwandeln?