Nicht nur Sozialarbeit

Ich bin gerade auf Arbeitsuche und neulich stieß ich dabei auf einen interessanten Film der Computerwoche. Wenn man die erste Hälfte des Films ansieht, könnte man meinen, es werden in der Industrie Sozialarbeiter als Softwareentwickler gesucht. Aber letzten Endes wird deutlich, dass die ganze Sozialarbeit ohne Programmierfähigkeiten nichts bringt. Softwareentwickler sollten Erfahrung mit agiler Entwicklung z.B. ala Scrum oder Kanban verfügen und ihren Code mit Unit-Tests versehen. Super, so gefällt mir Entwicklung. Letztens habe ich für ein Vorstellungsgespräch einmal mehr einen Abspieler für Go-Partien im SGF-Format geschrieben, da ich älteren Code verloren hatte. Es war eine sehr gute Gelegenheit für eine Neuprogrammierung. Denn ich hatte beim ersten Gespräch den Mund sehr voll genommen, dass ich sehr auf Sauberkeit und Qualität des Codes achte. Als ich das Progrämmchen schrieb und bei der nächsten Vorstelung präsentierte, habe ich auf saubere Objektorientierung geachtet, nämlich Codeabschnitte mit hoher Kohäsion zu einer Klasse zusammen zu fassen. Ich habe auch auf Lesbarkeit geachtet und darauf, doppelten Code zu vermeiden. Natürlich ging es dabei auch um handwerkliche C++-Fähigkeiten und modernes C++.

Weil das Ganze so viel Spaß macht, und weil ich ganz die Tests vergessen hatte, die ja besonders zur Lesbarkeit und zur Qualität, besonders in ernsthaften Projekten, beitragen, habe ich nun die Visual Studio-Solution auf drei Unterprojekte verteilt. Ein Projekt, SGFAnalyzer, berechnet mir den Brettzustand nach setzen eines Steins. Dies ist der Logikteil und wird nachträglich mit Tests versehen. Das andere Projekt ist die reine Oberfläche, für die ich keine Tests schreibe und schließlich gibt es ein Testprojekt. Das Testprojekt lege ich als ein C++-Testprojekt an. Damit ich die Vorteile des .NET-Frameworks nutzen kann, mache ich das Projekt zu einer Assembly, indem ich die .cpp-Datei mit den Unit-Tests mit dem CLR(Common Language Runtime)-Flag versehe. Nun kann ich Tests mit C++/CLI schreiben. Hier ist eine gute Anleitung.

Zusätzlich zur vorhandenen Funktionalität füge ich mir eine Funktion hinzu, die mir nach dem einfachsten Algorithmus bei jedem Zug den Zustand jedes einzelnen Punktes berechnet. Entweder der Punkt ist neutral oder mehr von weiß oder mehr von schwarz beeinflusst. So sieht das Ergebnis aus:

Und hier ist der Quellcode.

Bevor man die Anwendung mit dem Visual Studio startet, muss man noch das Visual Studio Add-in 1.1.11 for Qt4 und die Qt libraries 4.8.4 for Windows herunterladen und installieren.