Ich bin auf das Bowling Game Kata von Uncle Bob gestoßen aus dem Hintergrund besser den TDD-Workflow zu verinnerlichen. Mir geht es da um die PPT, die auf der Seite zum Download steht und das Problem beschreibt, Anforderungen vorgibt und exemplarisch eine TDD Lösung erarbeitet.
Am Anfang der PPT (Folien 4-9) wird ein objektorientiertes Design vorgestellt und ich wurde hierdurch gedanklich ziemlich darauf vorbereitet nun testgetrieben, Stück für Stück, am Ende bei dieser Lösung zu landen. In mir fing es schon zu denken an: "Ich werde die Frames als Klassen abbilden. Ein Frame muss zur Berechnung des Scores für Spare und Strike jedoch seinen Nachfolger kennen... ich werde wohl eine verkettete Liste benötigen..". Ich hab mich jedoch gezügelt und darauf besonnen, dass man mit TDD nichts überstürzt. Ich hab mir also nichts weiter dabei gedacht versucht das Kata eigenständig zu lösen und mit der PPT abzugleichen. Hat Es hat Spaß gemacht und ich war verwundert wie einfach man zu den Algorithmen gekommen ist, wie lesbar der Code ist und wie elegant es gelöst ist.
Folgende Aspekte beschäftigen mich dazu:
1. Offen gelassen hat die PPT das am Anfang vorgestellte objektorientierte Design. Ist das jetzt der finale Code? Was ist mit den Klassen? Komme ich mit TDD gar nicht zu dem objektorientierten Design?
2. Wenn ich TDD mal wieder vergesse und es "klassisch" löse, also nach dem vorgestellten objektorientierten Design, dann lande ich bei einer Lösung die nicht annähernd so elegant und einfach ist.
Ich habe keine konkreten Fragen dazu. Vielleicht kann jemand die Gedanken nachvollziehen und seine Sichtweise dazu beschreiben.
Am Anfang der PPT (Folien 4-9) wird ein objektorientiertes Design vorgestellt und ich wurde hierdurch gedanklich ziemlich darauf vorbereitet nun testgetrieben, Stück für Stück, am Ende bei dieser Lösung zu landen. In mir fing es schon zu denken an: "Ich werde die Frames als Klassen abbilden. Ein Frame muss zur Berechnung des Scores für Spare und Strike jedoch seinen Nachfolger kennen... ich werde wohl eine verkettete Liste benötigen..". Ich hab mich jedoch gezügelt und darauf besonnen, dass man mit TDD nichts überstürzt. Ich hab mir also nichts weiter dabei gedacht versucht das Kata eigenständig zu lösen und mit der PPT abzugleichen. Hat Es hat Spaß gemacht und ich war verwundert wie einfach man zu den Algorithmen gekommen ist, wie lesbar der Code ist und wie elegant es gelöst ist.
Folgende Aspekte beschäftigen mich dazu:
1. Offen gelassen hat die PPT das am Anfang vorgestellte objektorientierte Design. Ist das jetzt der finale Code? Was ist mit den Klassen? Komme ich mit TDD gar nicht zu dem objektorientierten Design?
2. Wenn ich TDD mal wieder vergesse und es "klassisch" löse, also nach dem vorgestellten objektorientierten Design, dann lande ich bei einer Lösung die nicht annähernd so elegant und einfach ist.
Ich habe keine konkreten Fragen dazu. Vielleicht kann jemand die Gedanken nachvollziehen und seine Sichtweise dazu beschreiben.