In meinem aktuellen Projekt (ein Spiel in C ++) habe ich beschlossen, Test Driven Development zu 100% während der Entwicklung zu verwenden.
In Bezug auf die Codequalität war dies großartig. Mein Code war noch nie so gut gestaltet oder fehlerfrei. Beim Anzeigen von Code, den ich vor einem Jahr zu Beginn des Projekts geschrieben habe, schaudert es nicht, und ich habe ein viel besseres Gespür dafür erlangt, wie man Dinge strukturiert, nicht nur leichter testbar, sondern auch einfacher zu implementieren und zu verwenden .
Es ist jedoch ein Jahr her, seit ich mit dem Projekt begonnen habe. Zugegeben, ich kann nur in meiner Freizeit daran arbeiten, aber TDD verlangsamt mich immer noch erheblich im Vergleich zu dem, was ich gewohnt bin. Ich habe gelesen, dass die langsamere Entwicklungsgeschwindigkeit mit der Zeit besser wird, und ich denke mir Tests definitiv viel leichter aus als früher, aber ich bin jetzt seit einem Jahr dabei und arbeite immer noch im Schneckentempo.
Jedes Mal, wenn ich über den nächsten Schritt nachdenke, der Arbeit erfordert, muss ich jedes Mal anhalten und darüber nachdenken, wie ich einen Test dafür schreiben würde, damit ich den tatsächlichen Code schreiben kann. Ich werde manchmal stundenlang stecken bleiben und genau wissen, welchen Code ich schreiben möchte, aber nicht wissen, wie ich ihn fein genug aufschlüsseln kann, um ihn vollständig mit Tests abzudecken. In anderen Fällen überlege ich mir schnell ein Dutzend Tests und schreibe eine Stunde lang Tests, um einen winzigen Teil des realen Codes zu erfassen, dessen Erstellung ansonsten einige Minuten gedauert hätte.
Oder nachdem ich den 50. Test abgeschlossen habe, um eine bestimmte Entität im Spiel und alle Aspekte ihrer Erstellung und Verwendung abzudecken, schaue ich auf meine To-Do-Liste und sehe die nächste Entität, die codiert werden muss weitere 50 ähnliche Tests, um es umzusetzen.
Es ist zu dem Punkt gekommen, dass ich angesichts der Fortschritte des letzten Jahres in Erwägung ziehe, TDD aufzugeben, um "das verdammte Projekt fertig zu stellen". Ich freue mich jedoch nicht darauf, die damit verbundene Codequalität aufzugeben. Ich fürchte, wenn ich aufhöre, Tests zu schreiben, werde ich es mir nicht mehr zur Gewohnheit machen, den Code so modular und testbar zu machen.
Mache ich vielleicht etwas falsch, um noch so langsam dabei zu sein? Gibt es Alternativen, die die Produktivität beschleunigen, ohne die Vorteile vollständig zu verlieren? BISSCHEN? Weniger Testabdeckung? Wie können andere Menschen TDD überleben, ohne die Produktivität und Motivation zu beeinträchtigen?