Dies ist eine Frage zum Arbeiten in Teams.
Kürzlich habe ich an meinem ersten größeren Programmierprojekt (ca. 80 Klassen, Java) mit einem Team von 6 Personen gearbeitet, obwohl nur 4 von uns kontinuierlich an dem Code gearbeitet haben. Wir haben die zu erledigende Arbeit früh verteilt und irgendwann musste ich eine Methode aufrufen, die noch nicht von einem meiner Co-Programmierer implementiert wurde. Wie ist der empfohlene Umgang damit?
Optionen, die ich gesehen habe, obwohl ich keine wirklich mag:
Schreiben Sie mir eine
//TODO
und wiederholen Sie diese Codezeile später, um zu überprüfen, ob die Methode in der Zwischenzeit implementiert wurde.Bitten Sie das entsprechende Teammitglied, dies jetzt umzusetzen .
Auslösen einer benutzerdefinierten runtimeException mit einer klaren Beschreibung dessen, was noch nicht implementiert ist. (Wenigstens müssen wir nicht lange suchen, um herauszufinden, was fehlt)
Fügen Sie ihrer Klasse die erforderliche Methode hinzu und schreiben Sie sie
//TODO
in den Nachrichtentext. Senden Sie ihnen möglicherweise auch eine kurze Nachricht über diese Änderung. (Jetzt ist es nicht mehr mein Problem, aber dies kann zu lästigen Zusammenführungskonflikten führen, wenn sie in der Zwischenzeit an dieser Methode gearbeitet haben.)Definieren Sie abstrakte Klassen oder Schnittstellen für alles, bevor Sie den Code schreiben, der die Arbeit erledigt. (Funktionierte nicht so gut, da diese Schnittstellen oft geändert wurden)
Antworten:
Es ist eine interessante Frage und die Antwort könnte einfacher sein als Sie denken.
Schreiben Sie einfach Tests, die Ihre Annahmen bestätigen. Es spielt keine Rolle, ob Sie die Implementierung oder Ihre Programmierkollegen durchführen
Die lange Antwort.
Alle Optionen, die Sie auflisten, sind eher passiv und erfordern, dass Sie früher oder später zurückkehren und den Code (falls vorhanden) erneut aufrufen.
Um ein ausreichendes Testniveau zu erreichen, würde ich vorschlagen, dass Sie sich zwei Disziplinen ansehen.
TDD - testgetriebene Entwicklung - dies stellt sicher, dass Sie Ihre Absicht beschreiben und ausreichend testen. Es gibt Ihnen auch die Möglichkeit, Methoden und Klassen (auch unter Verwendung von Schnittstellen) zu verspotten oder zu fälschen, die noch nicht implementiert sind. Der Code und die Tests werden weiterhin kompiliert und ermöglichen es Ihnen, Ihren eigenen Code unabhängig vom Code Ihrer Programmierkollegen zu testen. (siehe: https://en.wikipedia.org/wiki/Test-driven_development )
ATDD - Akzeptanztestgesteuerte Entwicklung - Hierdurch wird eine äußere Schleife (um die TDD-Schleife) erstellt, mit deren Hilfe Sie die Funktion als Ganzes testen können. Diese Tests werden nur dann grün, wenn die gesamte Funktion implementiert ist. Dadurch erhalten Sie eine automatische Anzeige, wenn Ihre Kollegen ihre Arbeit abgeschlossen haben. Ganz nett, wenn du mich fragst.
Einschränkung: In Ihrem Fall würde ich nur einfache Abnahmetests schreiben und nicht versuchen, zu viel von der Geschäftsseite einzubringen, da dies zu Beginn einfach zu viel wäre. Schreiben Sie einfache Integrationstests, die alle für die Funktion erforderlichen Teile des Systems zusammenfassen. Das ist alles was benötigt wird
Auf diese Weise können Sie Ihren Code in eine Continuous Integration-Pipeline einfügen und eine äußerst zuverlässige Implementierung erstellen.
Wenn Sie in diesem Thema mehr erfahren möchten, klicken Sie auf die folgenden Links:
quelle
Fragen Sie nach Stubs.
Oder schreibe sie selbst. In jedem Fall müssen Sie und Ihre Mitarbeiter die Schnittstellen und deren Verwendung vereinbaren. Diese Vereinbarung werden muss , relativ verfestigt , so dass Sie kann gegen Stubs entwickeln - nicht zu erwähnen, so dass Sie Ihre eigene Mocks für Ihre Unit - Tests erstellen können ...
quelle
In Ihrer Situation würde ich mit dem für diese Funktion zuständigen Teammitglied sprechen. Es kann sein, dass sie in der Lage sind, die Entwicklung dieser Funktion zu priorisieren, damit Sie sie früher verwenden können.
Ich würde Ihre vierte Option meiden. Sie haben Ihren gesamten Code geschrieben und betrachten ihn, wie Sie sagen, nicht mehr als Ihr Problem. Ihr Kollege schreibt dann die Implementierung der Funktion und betrachtet sie nicht länger als ihr Problem. Wer testet eigentlich, ob der von IHNEN geschriebene Code korrekt funktioniert?
quelle