Stellen Sie sich vor Sie User Story 1 haben, die die Durchführung eines Verfahrens erfordert:Agiles Szenario, welches ist richtig?
public static void MyMethod(string paramA);
Mehrere Klassen werden mit dieser Methode, und MyMethod tut alles, um zu vollenden Benutzergeschichte 1, aber nichts mehr.
Sie sind ziemlich sicher, dass in einer zukünftigen Iteration eine andere Geschichte (User Story 2) kommen, entlang welcher das Verfahren benötigen werden:
public static void MyMethod(string paramA, int paramB);
Die bisherigen Anrufe MyMethod wird Refactoring werden müssen, und Einige neue Aufrufe von MyMethod müssen hinzugefügt werden, um die Anforderungen von User Story 2 zu erfüllen (Anmerkung nach Story 2 macht es keinen Sinn, MyMethod nur mit paraMa aufzurufen).
Wenn diese User Story Arbeits 1 ist agiles Denken:
1) implementieren Nur: public void MyMethod (string parama);
2) Implementieren: public void MyMethod (Zeichenfolge paraMA, int paramB); - Aber nichts mit dem zweiten Parameter für jetzt tun. Die Aufrufe geben an diesem Punkt den Wert 0 an den zweiten Parameter weiter.
3) Implementieren: public void MyMethod (Zeichenfolge paraMa, int paramB); - Aber nichts mit dem zweiten Parameter für jetzt tun. Aufrufe geben den korrekten Wert ein (gemäß der Erwartung von User Story 2)
4) Implementieren: public void MyMethod (Zeichenfolge paraMa, int paramB); - Und alle Anrufe Vollständig, um Benutzergeschichte 1 und 2 zu bedecken
Ich mag es, wenn du viel antwortest. Das einzige, was ich sagen würde ist, dass S1 in der Interaktion 1 und S2 in der Iteration 2 ist. Ich glaube, man sollte immer ein lieferbares Produkt am Ende jeder Iteration haben. Jetzt: Nach einer Iteration ist es unwahrscheinlich, dass das Geschäft glücklich wäre, die Prouds zu versenden, aber es könnte sicherlich zur QA gehen und gut getestet werden.Also streben Sie nach Effizienz und tun dies jetzt (aber es besteht eine geringe Chance, dass Sie es falsch verstehen, wenn sich die Anforderungen und/oder das Design ändern) oder nur das tun, was für Iteration 1 erforderlich ist? –
Beachte auch, dass ich nicht glaube, etwas falsch für die Iteration 1 zu machen. Es hat keinen Sinn, etwas umzusetzen, das komplett neu gestaltet werden muss, wenn Geschichte 2 kommt. Wenn du weißt, was kommt, wäre das verrückt. Aber solltest du die Extra-Meile in S1 gehen, damit du minimale Arbeit machst, wenn die S2 kommt? Oder bevorzugen Sie Fokus, auch wissend: "Vorhersage ist sehr schwierig, besonders in der Zukunft." - Niels Bohr (dänischer Physiker). –
Ich würde nicht in Erwägung ziehen, einen Parameter zu einer Methode hinzuzufügen, die nicht in S1 verwendet wurde, um ein nicht versandbares Produkt zu erstellen. Man könnte es unnötig aufgebläht nennen, aber sicher immer noch funktional. Lieferbar bedeutet nur Fertig gemacht; getestet, dokumentiert, baubar und installierbar. – DancesWithBamboo