In meiner Erinnerung sagten mir die meisten Leute, ich solle von oben nach unten entwerfen. Wenn ich eine Webseite implementieren möchte, sollte ich diese Seite auf dem Papier abbilden oder zeichnen und sie dann in einige Funktionen unterteilen. Für jede Funktionalität versuche ich, die externe API zu entwerfen und sie entsprechend zu implementieren.
Aber in TDD heißt es, ich solle zuerst eine sehr kleine Funktionalität (eine Methode?) betrachten, ihren Test schreiben, fehlschlagen, sie implementieren und den Test bestehen. Das Zusammensetzen ist der letzte Schritt. Ich kann mir nicht vorstellen, wie es gute API bekommt.
Und am merkwürdigsten ist, dass sie sagen, TDD sei nicht nur Unit-Tests und auch Funktionstests. Ich denke, es bedeutet oben-unten. Wenn es eine Funktionalität A gibt, die aus den Methoden B, C und D besteht, dann schreibe ich im Sinne von TDD zuerst den Funktionstest für A. Aber ... B, C, D sind alle unimplementiert. Sollte ich drei Stubs verwenden? Wenn B von den anderen drei Methoden abhängt?
Ich habe TDD verwendet, um einige kleine Programme zu schreiben. Aber als ich eine Anwendung mit GUI anstrebte, blieb ich stecken.