Warum wird MVC & TDD nicht mehr in der Spielearchitektur eingesetzt? [geschlossen]


155

Ich werde dies mit der Bemerkung vorwegnehmen, dass ich nicht viel von Spielquellen gesehen habe und auch nicht viel in der Art von Spielen gebaut habe.

Aber wenn ich versuche, 'Enterprise'-Codierungspraktiken in Web-Apps anzuwenden, schadet es mir ernsthaft, wenn ich mir den Quellcode eines Spiels anschaue: "Was macht diese Sichtweise mit Geschäftslogik? Diese muss umgestaltet werden "

Das beunruhigt mich, als ich im Begriff bin, ein Spielprojekt zu starten, und ich bin mir nicht sicher, ob der Versuch, den Entwicklungsprozess zu mvc / tdd zu machen, uns behindern oder helfen wird, da ich nicht viele Spielbeispiele sehe, die dies verwenden oder viel drängen auf bessere Architekturpraktiken in der Gemeinde.

Das Folgende ist ein Auszug aus einem großartigen Artikel über Prototyping-Spiele , obwohl es mir genau so vorkam, wie es viele Spieleentwickler beim Schreiben von Serien-Game-Code zu tun scheinen:

Fehler Nr. 4: Aufbau eines Systems, kein Spiel

... wenn Sie jemals an etwas arbeiten, das Sie nicht direkt vorwärts bringt, hören Sie sofort damit auf. Als Programmierer tendieren wir dazu, unseren Code zu verallgemeinern, ihn elegant zu gestalten und in der Lage zu sein, mit jeder Situation umzugehen. Wir finden, dass ein Juckreiz schrecklich hart nicht kratzt, aber wir müssen lernen, wie. Es hat viele Jahre gedauert, bis mir klar wurde, dass es nicht um den Code geht, sondern um das Spiel, das Sie am Ende versenden.

Schreiben Sie kein elegantes Spielkomponentensystem, überspringen Sie den Editor vollständig und verdrahten Sie den Status im Code, vermeiden Sie das datengetriebene, selbstanalysierende, verrückte XML und codieren Sie einfach das verdammte Ding.

... Holen Sie sich einfach Sachen auf dem Bildschirm, so schnell Sie können.

Und verwenden Sie niemals das Argument „Wenn wir uns etwas mehr Zeit nehmen und dies richtig machen, können wir es im Spiel wiederverwenden“. JE.

Liegt es daran, dass Spiele (meistens) visuell orientiert sind, so dass es sinnvoll ist, den Code in der Ansicht stark zu gewichten, sodass die Vorteile einer Verlagerung auf Modelle / Controller relativ gering sind. Warum also die Mühe machen?

Ich habe das Argument gehört, dass MVC einen Performance-Overhead einführt, aber dies scheint mir eine vorzeitige Optimierung zu sein, und dass wichtigere Performance-Probleme behoben werden müssen, bevor Sie sich Gedanken über MVC-Overheads machen (z. B. Render-Pipeline, AI-Algorithmen, Datenstruktur) durchqueren, etc).

Gleiches gilt für TDD. Es kommt nicht oft vor, dass Spiele Testfälle verwenden. Dies liegt jedoch möglicherweise an den oben genannten Designproblemen (gemischte Ansicht / Geschäft) und an der Tatsache, dass es schwierig ist, visuelle Komponenten oder Komponenten zu testen, die auf wahrscheinlichen Ergebnissen beruhen (z. B. in Physiksimulationen) ).

Vielleicht schaue ich nur auf den falschen Quellcode, aber warum sehen wir nicht mehr von diesen 'Enterprise'-Praktiken, die im Spieledesign angewendet werden? Sind die Anforderungen von Spielen wirklich so unterschiedlich, oder handelt es sich um eine Frage der Menschen / Kultur (dh Spieleentwickler haben einen anderen Hintergrund und daher unterschiedliche Codierungsgewohnheiten)?

Antworten:


137

Wie das Zitat sagt, machen viele Programmierer den Fehler, ein System zu bauen, kein Spiel. Normalerweise gerät dieses System immer wieder außer Kontrolle, bis es so komplex ist, dass es theoretisch alles verarbeiten kann, aber praktisch gesehen ist alles, was Sie haben, ein großes Bündel Code. Oder häufiger, bevor Sie überhaupt in eine Arbeitsphase geraten, sind Sie so in Code verwickelt, dass Sie den Fokus (wenn Sie überhaupt einen hatten) und die Motivation (da nichts wirklich funktioniert) verlieren.

Prototypen und Iterationen funktionieren in der Regel viel besser. Am Ende könnte ein großartiges Design herauskommen, aber öfter kommt etwas Schlichteres und Raffinierteres heraus. KISS und YAGNI fallen mir ein.

Ich persönlich glaube, dass es ein Gleichgewicht geben muss. Wenn es eine Kernmechanik in Ihrem Spiel gibt, arbeiten Sie daran. Sie müssen noch iterieren, aber Sie müssen es verfeinern. Hinweis: Die Organisation Ihres Codes ist kein zentraler Bestandteil Ihres Spiels.

Ein typisches Beispiel : Peggle von PopCap Games. Eine Kernmechanik des Spiels ist die Ballphysik. Sie haben es perfektioniert! Ich bin mir sicher, dass sie ziemlich viel Zeit damit verbracht haben, sicherzustellen, dass es absolut perfekt war, denn es ist das, was das Spiel ausmacht. Gleichzeitig kann ich mir einen frühen Prototyp des Spiels vorstellen, der möglicherweise nur Sprites auf den Bildschirm zeichnet und eine Art primitiverer Kollisionserkennung und Bouncing durchführt, um zu sehen, ob die Spielidee Spaß macht. Als sie dann herausfanden, dass es Spaß machen kann, einen Ball zu schießen und ihm beim Abprallen zuzusehen, verfeinerten sie das Abprallen des Balls. (das ist natürlich alles nur Spekulation)

Es hängt auch von Ihren technischen Anforderungen ab, die Sie frühzeitig festlegen sollten (nicht Ihr Spieldesign, sondern nur die technischen Anforderungen). Die Plattform, auf der Ihr Spiel ausgeführt wird, sollte sich nicht ändern. Wenn Sie Änderungen zulassen möchten, müssen Sie genau wissen, inwieweit Sie Änderungen zulassen möchten, nicht mehr und nicht weniger. Entwerfen Sie darauf. Wenn du ein Spiel für OpenGL entwickelst und dir DirectX egal ist, ist dir das wirklich egal. Das bedeutet, wenn es für Sie bequemer ist, jedes Objekt für sich selbst zeichnen zu lassen und sich nicht um Fabriken und andere derartige Entwurfsmuster zu kümmern, dann tun Sie dies. Es ist okay, weil es die Anforderungen erfüllt. Sie sollten es später nicht ändern müssen, ungeachtet dessen, was Sie sich selbst sagen. Und im schlimmsten Fall? Refactor später.und erhalten ein funktionierendes Spiel auf einer Plattform, auch wenn dies bedeutet, dass es nicht gleichzeitig und automatisch auf Ihrem Toaster ausgeführt werden kann.

Testgetriebenes Design ist jedoch ein eher einsichtiges Thema. Ich bin der Überzeugung, dass Spieleentwickler mehr davon machen sollten. Ich denke auch, dass Spieleentwickler einige der strengsten und engsten Zeitpläne haben, und sie denken, dass sie es sich nicht leisten können, Zeit mit TDD zu verbringen, wenn sie nur ein Spiel in Gang bringen wollen. Auch, wieder mit der Motivation, TDD ist viel langsamer und man sieht viel weniger von einem funktionierenden Spiel (zumindest am Anfang). Dies kann schwerwiegende negative Auswirkungen auf die Motivation des Programmierers haben.

Ich denke, es ist auch nur ein allgemeiner Mangel an Wissen und Übung. Ich glaube nicht, dass TDD auch in anderen Bereichen verbreitet ist, aber wie bei der agilen Entwicklung, denke ich, breitet es sich aus. Man könnte sagen, es ist seiner Zeit voraus (oder vielleicht auch nicht, wie es Jahre später sein könnte). Wichtiger als TDD ist "RDD" - Requirements Driven Development. Ich habe das gerade erfunden.Was ist dein Ziel? Ein Spiel machen. Alles andere kommt an zweiter Stelle. Wenn Sie nachweisen können, dass TDD die Produktivität steigert und den Teams hilft, Termine einzuhalten, glauben Sie dann nicht, dass jeder es nutzen würde? Und vielleicht ist das der Fall. Aber im Moment ist unsere Branche wettbewerbsfähiger als je zuvor, es gibt immer kürzere Fristen und Dinge, die nur funktionieren müssen. Bauarbeiter bauen nicht zuerst Gerüste. Sie legen ein Fundament, dann heben sie einige Wände und Böden an und bauen dann selektive Gerüstteile, um bestimmte Aufgaben zu erledigen, die das Gerüst bequemer macht. Ich denke, dasselbe gilt für die Softwareentwicklung.

Entschuldigung für so einen langen Beitrag. Ich hoffe, Sie haben ein bisschen Weisheit daraus gewonnen. Ich bin nur ein Student, spreche über meine Beobachtungen, habe nur sehr begrenzte Branchenerfahrung, lese aber viel von Branchenexperten. Also nimm meine Worte mit einem Körnchen Salz.

Und hey, mach, was du denkst, wird funktionieren. Sie können es jederzeit ändern oder ausrangieren und neu beginnen. Das ist das Coole an jeder Form von Technik; Wenn es Ihnen zunächst nicht gelingt, probieren Sie etwas anderes. (oder so ähnlich :-P) Du gießt keinen Beton; Software ist formbar.


Übrigens habe ich diese Art von Frage gestellt und diese Art von Designprinzipien für einige Zeit erforscht. Hier und in Stack Overflow finden Sie einige Fragen, die für Sie relevant sein könnten:


32

Hier ist meine ursprüngliche Antwort auf eine ähnliche Frage zu SO aus einer früheren Zeit, zumindest in Bezug auf den MVC-Teil Ihrer Frage:

Es wird selten in Spielen verwendet. Ich habe eine Weile gebraucht, um herauszufinden, warum, aber hier sind meine Gedanken:

MVC dient zur Unterscheidung von zwei Darstellungen. Das Modell ist die abstrakte Darstellung Ihrer Daten. So sieht die Maschine den Status Ihrer Anwendung. Die Ansicht (und die Steuerelemente) stellen eine konkretere sichtbare Instanziierung dieses Systems auf eine Weise dar, die für den Menschen von Bedeutung ist.

In den meisten Geschäftsanwendungen sind diese beiden Welten ziemlich unterschiedlich. Zum Beispiel ist das Modell einer Tabelle einfach ein 2D-Wertegitter. Es muss nicht darüber nachgedacht werden, wie breit die Zellen in Pixeln sind, wo sich die Bildlaufleisten befinden usw. Gleichzeitig weiß die Tabellenansicht nicht, wie Zellenwerte berechnet oder gespeichert werden.

In einem Spiel sind diese beiden Welten viel näher beieinander. Die Spielwelt (Modell) besteht normalerweise aus einer Reihe von Entitäten, die in einem virtuellen Raum positioniert sind. Die Spielansicht ist auch eine Reihe von Elementen, die in einem virtuellen Raum positioniert sind. Begrenzung von Volumen, Animation, Position usw. Alle Dinge, die Sie als Teil der "Ansicht" betrachten, werden auch direkt vom "Modell" verwendet: Animation kann sich auf Physik und KI usw. auswirken.

Das Endergebnis ist, dass die Grenze zwischen Modell und Ansicht in einem Spiel willkürlich und nicht hilfreich ist: Sie würden am Ende viel Zustand zwischen ihnen duplizieren.

Stattdessen neigen Spiele dazu, Dinge entlang der Domänengrenzen zu entkoppeln: KI, Physik, Audio, Rendering usw. werden so getrennt wie möglich gehalten.


20

Weil MVC nicht in die Architektur eines Spiels passt. Der Datenfluss für ein Spiel unterscheidet sich grundlegend von dem einer Enterprice-Anwendung, da er nicht ereignisgesteuert ist und häufig ein (sehr) knappes Millisekundenbudget für die Ausführung dieser Vorgänge zur Verfügung steht. Es gibt eine Menge Dinge, die in 16,6 Millisekunden passieren müssen, daher ist es vorteilhafter, eine "feste" und starre Daten-Pipeline zu haben, die die Daten verarbeitet, die Sie in genau dieser Zeit auf dem Bildschirm benötigen.

Auch die Trennung ist da; Die meiste Zeit ist es einfach nicht so verdrahtet wie das MVC-Muster. Es gibt eine Rendering-Engine (View), eine Benutzereingabebehandlung (Controller) und den Rest wie Gameplay-Logik, AI und Physik (Model). Denk darüber nach; Wenn Sie Benutzereingaben abrufen, das AI ausführen und das Bild 60 Mal pro Sekunde rendern, warum benötigen Sie dann einen Beobachter zwischen dem Modell und der Ansicht, um zu erfahren, was sich geändert hat? Interpretiere das nicht so, als würde ich sagen, dass du das Observer-Muster in Spielen nicht brauchst, aber in diesem Fall tust du es wirklich nicht. Du machst sowieso die ganze Arbeit, jeden Frame.

Obwohl TDD in Entwicklungsstudios kaum verwendet wird, verwenden wir agile Methoden für die Softwareentwicklung, und SCRUM scheint zumindest hier in Europa die beliebteste Wahl zu sein. Der Grund ist einfach, die Veränderungen kommen von überall her. Die Künstler möchten möglicherweise mehr Texturbudget, größere Welten, mehr Bäume, während die Designer eine reichhaltigere Story (mehr Inhalt auf der Festplatte), eine Streaming-Welt und die Verlage möchten, dass Sie pünktlich und budgetgerecht fertig werden, ebenso wie die Marketingabteilung. Ansonsten ändert sich der "Stand der Technik" rasant.

Das bedeutet nicht, dass wir auch keine Tests durchführen. Die meisten Studios haben große Q & A-Abteilungen, führen eine Menge Regressionstests durch und führen regelmäßig Unit-Tests durch. Es macht jedoch kaum Sinn, Unit-Tests im Vorfeld durchzuführen, da ein Großteil der Bugs mit Kunst- / Grafikproblemen zu tun hat (Löcher in Kollisionsnetzen, falsche Texturen, Störungen in der Schärfentiefe), die Unit-Tests nicht abdecken können. Und neben dem funktionierenden Code ist der wichtigste Faktor bei jedem Spiel, dass es Spaß macht, und es gibt keine Unit-Tests, die das machen.

Denken Sie auch daran, dass dies in der Konsolenwelt sogar noch anders ist, da Sie mehr für die Hardware als für alles andere programmieren. Dies bedeutet im Allgemeinen (PS2 / PS3), dass der Datenfluss in fast jedem Fall viel wichtiger ist als der Code-Fluss. aufgrund von Leistungsüberlegungen. Dies macht die Verwendung von TDD als Architekturwerkzeug in den meisten Fällen zunichte. Guter OOP-Code weist im Allgemeinen einen schlechten Datenfluss auf, was das Vektorisieren und Parallelisieren erschwert.


13

Warum wird MVC & TDD nicht mehr in der Spielearchitektur eingesetzt?

Achtung: Meinung voraus.

MVC wird nicht (viel) verwendet, weil:

  1. MVC ist ein relativ neuer Ansatz und Spiele basieren normalerweise auf altem Code. Die meisten Leute, die MVC-Apps machen, bauen sie jedes Mal aus dem Nichts. (Ich weiß, dass MVC selbst Jahrzehnte alt ist. Neu ist das weit verbreitete Interesse daran, das im Wesentlichen von Web-Apps wie RoR herrührte.) In der Business-Software, an der ich gearbeitet habe, die auf Legacy-Code basierte, konnte MVC dort auch nicht verwendet werden. Es ist eine Kultursache, aber nicht spielspezifisch.
  2. MVC ist im Wesentlichen ein GUI-Muster für ereignisgesteuerte Programme. Spiele sind weder GUI-dominiert noch ereignisgesteuert, daher ist die Anwendbarkeit nicht so gut wie bei Web-Apps oder anderen formularbasierten Anwendungen. MVC ist in der Regel das Beobachtungsmuster mit einigen bekannten Rollen, und Spiele haben oft nicht den Luxus, etwas Interessantes zu beobachten - sie müssen jeden Frame (oder eine Variation davon) aktualisieren, unabhängig davon, ob jemand auf etwas geklickt hat oder nicht .

Das heißt nicht, dass Spiele von MVC nicht viel lernen können. Ich versuche immer, das Modell von der Ansicht in meinen Spielen zu trennen. Die traditionelle Vorstellung, dass Ansicht und Controller zwei Teile desselben (Widget-) Objekts sind, funktioniert jedoch nicht wirklich, sodass Sie etwas abstrakter vorgehen müssen. Ich stimme Ihnen zu, dass die Leistung hier wahrscheinlich kein wirkliches Problem darstellt. Wenn die Leistung von der Trennung von visuellem und logischem Material profitieren kann, ist dies für die Cache-Kohärenz, Parallelität usw. besser geeignet.

TDD wird nicht (viel) verwendet, weil:

  1. Die Verwendung in Spielen ist sehr umständlich. Auch hier ist es in Ordnung für ereignisgesteuerte Software, bei der Ein- und Ausgänge kommen und Sie vergleichen können, was Sie gesehen haben, mit dem, was Sie erwartet haben, und es als korrekt abhaken können. Bei Simulationen mit großen Mengen an gemeinsamem Status ist dies erheblich umständlicher.
  2. Es gibt keinen unbestreitbaren Beweis dafür, dass es überhaupt etwas hilft. Nur eine Menge Behauptungen, und einige Zahlen basieren oft auf Selbstberichterstattung und Appellen an die Behörde. Vielleicht hilft es armen Programmierern, mittelmäßig zu werden, hält aber gute Programmierer zurück. Vielleicht ist es besser, die Zeit, die Sie für das Schreiben von Tests aufgewendet haben, mit dem Erlernen der SOLID-Prinzipien oder dem Design der richtigen Benutzeroberfläche zu verbringen. Vielleicht gibt es ein falsches Sicherheitsgefühl, wenn Tests ohne echten Beweis bestanden werden, dass Sie genug Tests haben, um sicherzustellen, dass Ihr Objekt das Richtige tut.

Auch hier halte ich Unit-Tests für großartig, denke aber nicht, dass "zuerst testen" entweder nützlich oder sinnvoll ist. Ich halte es auch nicht für sinnvoll, die Hauptsimulation zu testen, wenn sich so viel gemeinsam genutzter Status mehrmals pro Sekunde ändert. Ich beschränke meine Tests im Allgemeinen auf meine niedrigere Version und meinen Bibliothekscode.

Wie Sie jedoch wahrscheinlich erraten können, bin ich weitgehend voreingenommen gegenüber "Enterprise-Coding-Praktiken", da Unternehmen dafür bekannt sind, Zeitrahmen und Budgets zu überschreiten. "Spieleentwickler auch!" Ich höre dich sagen - na ja. Ich glaube nicht, dass derzeit jemand wirklich weiß, wie man Software am besten entwickelt, und ich bin nicht davon überzeugt, dass die Übernahme von regulierten Praktiken in Mainstream-Software überhaupt eine Verbesserung gegenüber den freieren Praktiken in Unterhaltungssoftware darstellt. Ich vermute, dass dies in erster Linie denjenigen zugute kommt, die sich auf Standard-Java-Programmierer verlassen, bei denen diese Ansätze keine Leiter sind, um größere Höhen zu erklimmen, sondern ein Sicherheitsnetz, um zu verhindern, dass sie zu niedrig werden.


9

Wie Kylotan bemerkt: "In Spielen können Sie den Präsentationsaspekt nicht als ablösbares und ersetzbares Konzept behandeln, wie HTML und CSS für Web-Apps". Nachdem ich einige Spiele mit einem einfachen MVC-Muster (kein riesiges Framework) erstellt hatte, stellte ich fest, dass das Hauptproblem darin besteht, dass Ihr Modell Ihre Ansicht kennen muss. Es ist sehr wahrscheinlich, dass Sie Sprite-Bitmap-Daten, Hitbox-Daten oder 3D-Geometriedaten aus Ihren Kunstobjekten verwenden müssen, um die Kollisionserkennung (oder eine andere ähnliche Aufgabe) zu unterstützen. Dies bedeutet, dass jedes Modell einen Verweis auf seine Ansicht benötigt, wodurch das klassische MVC-Muster gebrochen wird. Sie können beispielsweise keine neue Ansicht für ein vorhandenes Modell mehr erstellen.

Das Komponentenmodell, das Sie z. B. in Unity3D sehen, ist der beste Weg, um den Spielcode zu organisieren.


4

In einigen Bereichen wird MVC bereits in der Spieleentwicklung eingesetzt. Dies wird vom Betriebssystem erzwungen, das über verschiedene Schnittstellen für Eingabe und Grafik verfügt. In den meisten Spielen sind einige weitere MVC-Instanzen enthalten, z. B. die Trennung von Physik, Rendering und Eingabethreads. Das funktioniert gut. Die moderne Idee von MVC scheint zu sein, dass sie fraktal wiederholt werden sollte, bis niemand mehr den Code verstehen kann. Spiele machen das zum Glück nicht.

TDD wird nicht verwendet, da selten bekannt ist, dass ein Spiel "funktionieren soll", bevor Sie einen Prototyp mehrmals durchlaufen. Praktiken von TDD, wie kontinuierliches Testen oder Integrationstesten, werden häufig in der Spieleentwicklung verwendet.


3

Die Spielsysteme wechseln langsam zu besseren Praktiken. Frameworks wie XNA bieten einen Einblick in die Verallgemeinerung / Bereinigung von Code, ohne dass zu viel Aufwand für Design oder Ausführungszeit anfällt. Aber im Allgemeinen würde ich sagen, dass es bei Spielsystemen vor allem darum geht, die Komplexität im Verhältnis zur Ausführungsgeschwindigkeit zu optimieren, während gleichzeitig ein enger Entwicklungsplan eingehalten und motiviert wird. Die Anwendung von Software-Engineering-Konzepten und Systemdesign hat in einer solchen Umgebung keine Priorität.

In meinen persönlichen Spielprojekten versuche ich, Code zu kommentieren oder zumindest lesbar zu machen, und ich füge Systeme zusammen, die später ein bisschen mehr Flexibilität (dh Allgemeingültigkeit) ermöglichen, aber am Ende des Tages, wenn möglich Du hast dein Spiel nicht weiterentwickelt, es fühlt sich einfach nicht gut an.

Außerdem haben Sie in der Regel bis zum Ende Ihres Spiels mindestens 1000 Ideen, wie Sie die zugrunde liegende Mechanik, die Kernsysteme usw. so verbessern können, dass nur sehr wenig von diesem "wiederverwendbaren" Code verwendet werden kann wirklich brauchbar sein. Tagsüber arbeite ich in einem regulären SE-Job, und obwohl die Systeme, an denen wir arbeiten, sehr umfangreich sein können, denke ich, dass sie im Vergleich zur Komplexität von Spielen verblassen.


2

Ich habe keine besondere Meinung zu MVC, abgesehen von der Tatsache, dass die Ansicht oft von der Logik durch die einfache Tatsache getrennt ist, dass die Render-Schleife eine Menge Dinge verpackt, die von Hardware verarbeitet werden können, und dass dies nicht der Ort ist, an dem Sie "spielen wollen" Logik "gleichzeitig geschehen. Der "Controller" ist ebenfalls durch Hardware getrennt, aber leider arbeiten viele, wenn nicht die meisten Spieleentwickler "interessant" im Controller-Handler. (IMO sollte der Controller-Handler die Schaltflächen und Sticks lesen und eine "Präsentation" erstellen, damit das Spiel angezeigt werden kann, aber meine Seifenkiste ist nicht so stark.)

TDD ist etwas, über das ich sehr starke Meinungen habe. Es ändert nur die Entwicklung in einer Weise, dass sich Software ergibt, auf die man leichter aufbauen kann. Es ist zweifellos schwerer zu tun. Natürlich, da es schwieriger ist, es zu tun, ist es nicht getan. Einige Leute jammern darüber, dass TDD (oder allgemeiner Unit-Tests) keinen Wert haben, weil "das Spiel der Test ist", aber die Tatsache ist, dass bei TDD die Tests fast irrelevant sind. Der Punkt von TDD ist das Softwaredesign und die Architektur, die aus dem Prozess hervorgehen.

Durch das Umfassen von TDD ändert sich die Herangehensweise an die Programmierung. Ich hatte einige Gefühle darüber, was richtig und was falsch war, bevor ich den TDD-Pfad entlangging, aber als ich mit beiden Beinen einsprang, verstand ich viel mehr darüber, wie die Dinge, die ich tat, die zukünftige Entwicklung entweder unterstützten oder behinderten . In der Tat ist dies eine Art Punkt hinter dem Coderoom-Post, TDD ohne das t .

Zurück zu dem Grund, warum es nicht mehr in Spielen verwendet wird, sondern nicht nur hart ist, sondern den Leuten klar wird, dass die Art und Weise, wie sie es in der Vergangenheit getan haben, ihre eigenen Aufgaben unnötig erschwert hat. viel weniger schlucken.

Ich bin überzeugt, dass Menschen, die TDD ablehnen, einfach keine besseren Programmierer sein wollen. Sie denken bereits, dass sie in Programmierung, Design oder Architektur "exzellent" sind, obwohl ihr Code etwas völlig anderes aussagt.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.