Uncle Bobs Transformation Priority Premise

Uncle Bobs Code-Transformationen beim TDD

Durch das Buch 99 Bottles of OOP – A Practical Guide to Object-Oriented Design – das ich übrigens absolut empfehlen kann – bin ich auf einen recht alten Blogartikel von „Uncle Bob“ aufmerksam geworden: The Transformation Priority Premise. Der Autor von Clean Code* erklärt darin eine Reihe von „Transformationen“, die der mit TDD entwickelte Produktivcode durchläuft, während man von der einfachsten möglichen Lösung für den aktuell fehlschlagenden Test zur generischen Lösung des eigentlichen Problems kommt.

Er vergleicht diese Transformationen mit den allseits bekannten Refactorings*:

However refactorings are used to transform the structure of code without altering its behavior. These transformations are used in order to change the behavior of code. In particular, we use these transformations to make failing tests pass.

Die Liste der Transformationen enthält Vorgänge wie „null in Konstante ändern“, „Skalar in Array ändern“ oder „if in while ändern“. Diese Transformationen sollten beim Programmieren des Codes unter Test am besten der Reihe nach durchlaufen werden, um den Code Schritt für Schritt komplexer werden zu lassen.

Eine gute Richtlinie für Einsteiger in TDD! Die Liste kann als Vorlage dienen, gerade wenn man zu Beginn noch unsicher ist, wie die nächste Version des zu entwickelnden Algorithmus aussehen könnte.


Wie gehst du beim Programmieren deines Produktivcodes vor? Hältst du dich an die strikte Vorgabe von TDD?

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax