Alle Beispiele, die ich in Schulungsvideos gelesen und gesehen habe, enthalten vereinfachende Beispiele. Aber was ich nicht sehe, ist, wie ich den "echten" Code mache, nachdem ich grün geworden bin. Ist das der "Refactor" Teil?
Wenn ich ein ziemlich komplexes Objekt mit einer komplexen Methode habe und meinen Test und das Nötigste schreibe, um ihn zu bestehen (nachdem er zum ersten Mal fehlgeschlagen ist, Rot). Wann gehe ich zurück und schreibe den richtigen Code? Und wie viel echten Code schreibe ich, bevor ich erneut teste? Ich vermute, dass letzteres mehr Intuition ist.
Edit: Danke an alle die geantwortet haben. Alle Ihre Antworten haben mir sehr geholfen. Es scheint unterschiedliche Vorstellungen darüber zu geben, was ich gefragt oder verwirrt habe, und vielleicht gibt es sie, aber ich habe gefragt, ob ich eine Bewerbung für den Bau einer Schule habe.
In meinem Design habe ich eine Architektur, mit der ich beginnen möchte, User Stories usw. Von hier aus nehme ich diese User Stories und erstelle einen Test, um die User Story zu testen. Der Benutzer sagt, wir haben Leute, die sich für die Schule anmelden und Registrierungsgebühren zahlen. Ich überlege, wie ich das zum Scheitern bringen kann. Dabei entwerfe ich eine Testklasse für die Klasse X (vielleicht Student), die fehlschlagen wird. Ich erstelle dann die Klasse "Student". Vielleicht "Schule" weiß ich nicht.
Aber auf jeden Fall zwingt mich das TD- Design , die Geschichte zu durchdenken. Wenn ein Test fehlschlägt, weiß ich, warum er fehlschlägt, aber dies setzt voraus, dass ich ihn bestehen kann. Es geht um das Entwerfen.
Ich vergleiche das mit dem Nachdenken über Rekursion. Rekursion ist kein schwieriges Konzept. Es mag schwieriger sein, den Überblick in Ihrem Kopf zu behalten, aber in Wirklichkeit ist es am schwierigsten zu wissen, wann die Rekursion "abbricht", wann man aufhört (meiner Meinung nach natürlich). Also muss ich darüber nachdenken, was aufhört die Rekursion zuerst. Es ist nur eine unvollständige Analogie und es wird angenommen, dass jede rekursive Iteration ein "Durchlauf" ist. Nochmals nur eine Meinung.
In der Umsetzung ist die Schule schwerer zu sehen. Numerische und Bankbücher sind "einfach" in dem Sinne, dass Sie einfache Arithmetik verwenden können. Ich kann a + b sehen und 0 zurückgeben usw. Bei einem System von Leuten muss ich genauer überlegen, wie man das umsetzt . Ich habe das Konzept von Fail, Pass, Refactor (hauptsächlich aufgrund des Studiums und dieser Frage).
Was ich nicht weiß, beruht meiner Meinung nach auf mangelnder Erfahrung. Ich weiß nicht, wie ich einen neuen Studenten nicht anmelden soll. Ich weiß nicht, wie ich jemanden daran hindern kann, einen Nachnamen einzugeben und ihn in einer Datenbank zu speichern. Ich weiß, wie man eine +1 für einfache Mathematik erstellt, aber bei Entitäten wie einer Person weiß ich nicht, ob ich nur prüfe, ob ich eine eindeutige Datenbank-ID oder etwas anderes zurückerhalte, wenn jemand einen Namen in a eingibt Datenbank oder beide oder keine.
Oder vielleicht zeigt dies, dass ich immer noch verwirrt bin.