2009-01-28 6 views
8

Welche bietet mehr Vorteile für eine große Software, sagen wir mal Photoshop?D3 vs TDD Best Practices

Auch von TDD meine ich nicht nur Unit-Tests, weil Sie Unit-Tests auch in D3 verwenden können, nur nicht auf die gleiche Weise wie TDD.

D3: Design-Driven Development

TDD: Testgetriebene Entwicklung

+0

Obwohl ich Ihnen meine Antwort gegeben habe, denke ich, dass Sie mehr Details darüber geben müssen, was Sie TDD glauben, denn anscheinend haben Sie es nicht von DDD ausgeschlossen. –

+3

Für diejenigen, die nicht wissen, was diese Akronyme bedeuten, bitte identifizieren. Ich nehme an, TDD ist Test-Driven-Design, aber was ist DDD? Doofus-getriebenes Design? (Wenn ja, verwenden Sie einige Orte, an denen ich gearbeitet habe.) –

+4

DDD steht für Domain Driven Design. Ich denke, das ist es, was er meinte. –

Antwort

11

ich glaube auch nicht, dass sie sich gegenseitig ausschließende sind Ich glaube, Sie TDD verwenden können, um DDD zu bekommen.

103

DDD = Domain Driven Entwurf

TDD bedeutet, dass, bevor Sie eine Einheit des Verhaltens schreiben Sie einen Test für dieses Verhalten haben und nur dieses Verhalten. Erst nachdem diese Tests fehlgeschlagen sind, implementieren Sie das Verhalten. In jeder Inkarnation, die ich gesehen habe, war TDD auf der Ebene einer Methode oder Klasse - vielleicht ein paar Klassen zusammen arbeiten. Das Endergebnis ist, dass Sie hoch testbaren und daher sehr locker gekoppelten Code erhalten. Letztendlich geht es bei TDD darum, Code zu erstellen, der getestet werden kann.

DDD ist eine weit abstraktere Philosophie und eine Reihe von Entwurfsmustern, die sich mit dem Entwurf eines großen, skalierbaren und wartbaren Systems befassen. Letztendlich geht es bei DDD darum, ein Code-Ökosystem zu schaffen, das implizit oder explizit wichtige Teile des Domänenwissens erfasst.

Sie sehen also, sie schließen sich nicht gegenseitig aus. So ziemlich jeder, der sich mit DDD auskennt, ist auch ein TDD-Enthusiast.

+20

Downvote? Ernst? WTF? –

+0

Ich dachte, deine Antwort war sehr gut. Upvote. –

+0

Ich kenne ältere und gut eingestellte Leute in der agilen Community, die Test Drived DESIGN fördern, genau wie Jay es beschrieben hat. Sie erwarten, dass das Design magisch aus der Implementierung hervorgeht. – Jaksa

15

TDD ist weder Bottom-up noch Schreiben Tests vor der Codierung. Bei TDD geht es um Tests, um die Entwicklung voranzutreiben, mit dem Ziel, dass der Code vor der Auslieferung getestet wird. Es beginnt mit der Sicherstellung, dass die Benutzeranforderungen in einer Form geschrieben sind, die automatisierte Benutzerabnahmetests ermöglicht. Es geht weiter durch Integration und Funktionstests bis hin zu Komponententests. Stückprüfungen bilden am Ende den Löwenanteil.

Der Grund, warum Tests zuerst geschrieben werden sollten, ist, weil, wenn eine Lösung für ein Problem betrachtet (entworfen) wird, Sie automatisch Erwartungen haben, was die Lösung tun soll. Jede Erwartung kann als Test ausgedrückt werden, also warum nicht sofort die Erwartung dokumentieren und gleichzeitig einen automatisierten Test dafür durchführen, um sicherzustellen, dass die Lösung dieses Ziel erreicht?

+2

Obwohl nur die Hälfte der Antwort, mag ich diese Beschreibung von TDD. +1 – nrodic

0

Meiner Meinung nach, wenn Sie Tests zuerst schreiben (in TDD), entwerfen Sie das System. Wenn wir Tests nicht zuerst schreiben können, zeigt dies, dass es eine Mehrdeutigkeit in der Anforderung gibt. Wir können Geschichte vor Test schreiben und es als Spezifikation Test As Specification verwenden. Nach Bestehen der Tests können wir Tests als Dokument bekannt Test As Document verwenden. Wenn neue Entwickler zum Projekt hinzugefügt werden, können sie diese Tests zum Erlernen des Systemgeschäfts verwenden.

In DDD verwenden Sie einfach Geschichte zum Erstellen von Beziehungen zwischen Objekten. Was bei DDD wichtig ist, ist, dass Sie sich nur auf die Domain konzentrieren sollten. Wenn Sie zum Beispiel Geschäftslogik für Domänen schreiben, sollten Sie sich keine Sorgen darüber machen, ob Sie Entitäten in der Datenbank speichern. Kurz gesagt, sollten Sie beim Schreiben von Geschäftslogik nicht über etwas außerhalb der Domänen nachdenken.