Frage

Wie ich habe zunehmend absorbiert Agile in die Art und Weise denken, ich arbeite, YAGNI ( „Sie gehen zu müssen, es nicht“) scheint mehr und mehr an Bedeutung zu gewinnen. Es scheint mir eine der wirksamsten Regeln werden für fehlgeleitete Prioritäten Ausfiltern und zu entscheiden, was nicht weiter zu arbeiten.

Doch YAGNI scheint ein Konzept zu sein, die kaum über hier bei SO geflüstert. Ich lief die obligatorische Suche, und es zeigt nur in einer Frage Titel bereits -. Und dann in einer Nebenrolle

Warum ist das? Bin ich ihre Bedeutung zu überschätzen?

Disclaimer. Um die Antworten preempt Ich bin sicher, dass ich in Widerspruch bekommen, lassen Sie mich betonen, dass YAGNI die ist Gegenteil von quick-and-dirty . Es wird Sie Ihre kostbare Zeit und Mühe, sich auf die Teile bekommen Sie richtig machen müssen.

Hier sind einige off-the-top laufenden Fragen könnte man fragen.

ausgewählt meine Unit-Tests auf Basis von Benutzeranforderungen oder Gerüststruktur?

Bin ich die Installation (und Prüfung und Wartung) Unit-Tests, die nur dort sind, weil sie aus dem Rahmen fallen?

Wie viel des Codes durch meinen Rahmen erzeugt habe ich nie sah (aber immer noch vielleicht beißen mich eines Tages, obwohl YAGNI)?

Wie viel Zeit verbringe ich auf meine Werkzeuge arbeiten, anstatt das Problem des Benutzers?

Wenn Paar-Programmierung, die Rolle Wert des Betrachters liegt oft in "YAGNI".

Haben Sie eine CRUD-Tool verwenden? Erlaubt es (ja, fördern) Sie es als _RU_-Tool zu verwenden, oder ein C__D Werkzeug oder erstellen Sie vier Stücke von Code (plus vier Unit-Tests), wenn Sie brauchen nur ein oder zwei?

War es hilfreich?

Lösung

TDD hat YAGNI in einer Art und Weise zusammengefasst. Wenn Sie das tun richtig TDD, das heißt, nur die Tests schreiben, die in erforderlichen Funktionalität führen, entwickeln dann den einfachsten Code, um den Test zu bestehen, dann folgen Sie den YAGNI Prinzip standardmäßig. Nach meiner Erfahrung ist es nur, wenn ich außerhalb der TDD-Box bekommen und das Schreiben von Code beginnen, bevor Tests, Tests für Dinge, die ich oder Code nicht wirklich brauchen, die mehr als die einfachste Möglichkeit besteht darin, den Test zu bestehen, dass ich YAGNI verletzen .

Nach meiner Erfahrung dieser ist mein gängigste pas faux wenn TDD tun - ich neige dazu voraus zu springen und starten Sie das Schreiben von Code den nächsten Test zu bestehen. Das führt oft zu mir, die verbleibenden Tests zu beeinträchtigen, indem eine vorgefaßten Meinung, bezogen auf meinem Code, anstatt die Anforderungen von dem, was muss getestet werden.

YMMV.

Andere Tipps

YAGNI und KISS (Keep it simple, stupid) im wesentlichen das gleiche Prinzip. Leider sehe ich KISS etwa so oft erwähnt, wie ich „YAGNI“ zu sehen.

In meinem Teil der Wüste, ist die häufigste Ursache von Projektverzögerungen und Ausfällen ist schlechte Ausführung von unnötigen Komponenten, so dass ich stimme mit Ihrer Grundstimmung.

Die Freiheit, sich ändern Antriebe YAGNI . In einem Wasserfall-Projekt, ist das Mantra Umfang steuern. Scope wird gesteuert durch einen Vertrag mit dem Kunden zu etablieren. Folglich stopft der Kunde alles, was sie von im Rahmen Dokument denken kann, zu wissen, dass Änderungen an Umfang schwierig sein werden, sobald der Vertrag unterzeichnet wurde. Als Ergebnis erhalten Sie mit Anwendungen auf, die eine kurze Liste der Funktionen, nicht eine Reihe von Funktionen, die Wert haben.

Mit einem agilen Projekt baut das Produkt Besitzer einen priorisierten Product Backlog. Das Entwicklungsteam baut Funktionen basierend auf Priorität heißt Wert. Als Ergebnis erhalten die wichtigsten Sachen zuerst gebaut. Sie enden mit einer Anwendung, die Funktionen, die von den Nutzern bewertet werden. Die Sachen, die nicht wichtig ist, die Liste fällt oder nicht getan erhalten. Das heißt YAGNI.

Während YAGNI keine Praxis ist, es ist ein Ergebnis der priorisierten Backlog-Liste. Der Geschäftspartner schätzt die Flexibilität der Unternehmen gegeben ergibt, dass sie das Product Backlog von Iteration zu Iteration ändern und erneut priorisiert. Es ist genug, um zu erklären, dass YAGNI der Vorteil gewonnen, wenn wir leicht Änderung akzeptieren, auch spät in den Prozess einzubeziehen.

Das Problem ich finde, ist, dass die Menschen sogar Fabriken Eimer neigen zu schreiben, DI-Container mit (es sei denn, Sie bereits, dass in Ihrer Code-Basis haben haben) unter YAGNI. Ich stimme da mit JB König. Für viele Menschen, die ich mit YAGNI gearbeitet haben scheint die Lizenz zu sein, Ecken zu schneiden / schlampig Code zu schreiben.

Zum Beispiel, ich war ein PinPad API zum Abstrahieren mehr Modelle / Hersteller PINPad zu schreiben. Ich fand, es sei denn ich die Gesamtstruktur habe ich nicht einmal Tests meine Einheit schreiben. Ich bin kein sehr erfahrener Praktiker von TDD sein kann. Ich bin sicher, es würde seine unterschiedlichen Meinungen darüber, ob was ich getan habe ist YAGNI oder nicht.

Ich habe auf SO Referenzierung vorzeitige Optimierung viele Beiträge gesehen, die eine Form von YAGNI ist, oder zumindest ydniy (Sie es noch nicht brauchen).

Ich sehe YAGNI nicht als das Gegenteil von quick-and-dirty, wirklich. Es tut genau das, was gebraucht wird und nicht mehr und nicht wie die jemand schreibt Software Planung gibt es insgesamt 50 Jahre dauern. Es kann in seltenen Fällen kommen, weil es nicht wirklich, dass viele Fragen sind um sie zu bitten, zumindest meiner Meinung nach. Ähnlich wie bei den „do wiederholen sich nicht“ und „Keep it simple, stupid“ Regeln, die häufig geworden sind aber nicht notwendigerweise seziert und in 101 Arten analysiert. Manche Dinge sind einfach genug, dass es in der Regel bald bekommen wird nach einer wenig Übung zu tun. Einige Dinge hinter den Kulissen entwickelt, und wenn Sie sich umdrehen und schauen Sie feststellen, können sie einen anderen Weg geben kann Dinge zu nennen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top