Wann ist Code Review durchzuführen?

15

Wir sind kürzlich zu einem Scrum-Prozess übergegangen und arbeiten an Aufgaben und User Stories innerhalb von Sprints. Wir möchten Codeüberprüfungen häufig durchführen, um sie weniger einschüchternd zu machen. Wir denken, dass sie auf User Story-Ebene ausgeführt werden, sind unsicher, wie wir unseren Code verzweigen sollen, um dies zu berücksichtigen.

Wir verwenden VS und TFS 2010 und sind ein Team von 6 Personen.

Wir verzweigen derzeit nach Features, arbeiten jedoch daran, auf Scrum-Verzweigung umzusteigen.

Derzeit verwenden wir keine Regale und möchten diese nicht wirklich implementieren, wenn andere Techniken verfügbar sind.

Wie empfehlen Sie die Implementierung einer Codeüberprüfung pro User Story?

mcass20
quelle

Antworten:

3

Dies hängt von der Art der User Stories ab.

Es kann effektiv sein, für jede User Story einen Zweig zu erstellen. Fortschritte bei verschiedenen Storys sind sichtbar. Sie können bei Bedarf weitergegeben werden. Wenn Storys im Sprint nicht abgeschlossen sind, kann der Fortschritt für den nächsten Sprint im Zweig verbleiben . Endgültige Überprüfungen können dann am Ende einer User Story im Zweig Use Story durchgeführt und zusammengeführt werden, wenn der Code dem Standard entspricht.

Um auf die Art und Weise zu arbeiten, müssen die Storys fein abgestuft sein, um unüberschaubare Zusammenführungsaufgaben am Ende eines Sprints zu verhindern. Kleine Storys ermöglichen eine stetige Aktualisierung des Dev-Zweigs während des Sprints, aus dem Entwickler, die an anderen User-Storys arbeiten, ständig Informationen abrufen müssen (grundlegendes VCM).

Dies verursacht Prozess-Overheads, da ständig Zweige erstellt und zusammengeführt werden müssen. In einigen Fällen kann dies mit Automatisierungsskripten behoben werden, das Team muss sich jedoch noch mit dem VCS auskennen.

Am Ende eines Sprints verbinden Sie Ihren Entwicklungszweig mit Integration / Produktion usw.

Ich habe auch in Teams gearbeitet, in denen jeder von einem Entwicklerzweig arbeitet. Nach Abschluss einer User Story wird der Code zur Überprüfung und zum Testen in diesen Zweig verschoben. Wenn jemand etwas drückt, das den Entwickler-Build bricht, muss er das Team dazu bringen, Bier zu trinken.


quelle
13

Der effektivste Weg, Code zu überprüfen, besteht darin, aufzustehen, jemanden zu finden und ihn zu bitten, zu kommen und den Code zu besprechen, den Sie gerade entwickelt haben.

Verwenden Sie kein Tool, es sei denn, Sie können niemanden finden, der Ihren Code lokal überprüft.

Sie können Codeüberprüfungen insgesamt vermeiden, indem Sie sie koppeln.

Ryan Cromwell
quelle
Ich fragte mich, wann jemand das Pairing erwähnen würde. Zwischen dem und Unit-Tests erhalten Sie eine Menge Überprüfung.
JeffO
Ich las dies als "Steh auf, feuere jemanden und bitte ihn, zu kommen und den Code zu besprechen, den du gerade entwickelt hast." Danke, dass du meinen Tag gemacht hast.
Will Morgan
4

Sind alle im Team vor Ort? Wenn ja, bitten Sie einfach jemanden, vor dem Einchecken des Codes vorbeizuschauen. Nicht lokal? Starten Sie Ihr Lieblingsprogramm zur Bildschirmfreigabe und rufen Sie jemanden an. Ich persönlich mache das oft. Manchmal mache ich es einfach, um zu sagen "Hey, schau was ich getan habe!"

Ich bevorzuge diesen Stil der Ad-hoc-Codeüberprüfung dem Stil, bei dem jemand aufsteht und dem Team seinen Code vorstellt. Ad-hoc-Überprüfungen können Ihnen viele (alle?) Vorteile des Pairing ohne die Unbeholfenheit bieten. Außerdem stellt Ihr "Prüfer" häufiger Fragen und schlägt Verbesserungen in einer informellen Einzeleinstellung vor.

jgrim
quelle
1

Ich bin der Meinung, dass die Codeüberprüfung kein formaler Bestandteil von SCRUM ist, aber Revisionen sind eine unabhängige Taktik, um Qualität zu erzielen und Ihre Projekte / Ihr Team zu verbessern.

Sie würden also SCRUM (oder eine andere agile Entwicklungsmethode) verwenden, um die Qualität von PROJECT sicherzustellen / zu verbessern und den Zeitplan einzuhalten. Eine gute Taktik ist auch, die Produktrevision (nicht den Code) unabhängig von Ihren normalen QS- / Testaufgaben durchzuführen. Wenn diese Aktivität vor Ihrem Team / Partnern / Kunden / Publikum durchgeführt werden könnte, wäre es besser.

Sie sollten Code-Revisionen (oder andere spezifische Revisionen) verwenden, um Ihr TEAM zu verbessern und mittel- bis langfristig Ergebnisse zu erzielen. Dies wird sich auf Ihre PROJEKTE auswirken, langfristig jedoch als Ergebnis Ihrer TEAM-Verbesserung.

Um Ihre Frage zu beantworten, glaube ich, dass Sie versuchen, SCRUM zu stark zu nutzen, und Sie sollten Revisionen besser nur so in Betracht ziehen, wie sie sind.

Ron-Damon
quelle
Scrum sagt oder rät nichts in Bezug auf den Zeitplan. Es erwartet von Ihnen, dass Sie regelmäßig Wert liefern. Es bietet auch Momente, in denen Sie Ihren Prozess überprüfen und anpassen können, um besser zu werden (besser bedeutet nicht unbedingt schneller).
Ryan Cromwell
Ja, Scrum gibt nicht an, einen vollständigen Zeitplan als Teil davon zu erstellen. Trotzdem meinte ich "planen", wenn ich mich auf den Zeitplan bezog. Planen bedeutet, dass Ihr Kunde in einer bestimmten Zeit einen gewissen Wert erwartet, so dass er den Austausch zwischen dem Geld- und dem Geldwert durchführen kann (wenn Sie der Ansicht sind, dass Sie Entwicklungs- / Programmierungsdienste bereitstellen) ).
Ron-Damon
In diesem Fall sollte Ihr Kunde über ein Budget verfügen, das er in einer bestimmten Zeit ausgeben kann (um Sie beispielsweise zu bezahlen), und er muss möglicherweise einen Zeitplan einhalten. Ich arbeite als Dienstleister, deshalb kann ich diese Tatsache nicht beiseite lassen.
Ron-Damon
Abgesehen von Verträgen liefern Scrum-Teams Leistungen, die nicht von Wert sind. Wir entwickeln / programmieren als Mittel, um diesen Wert zu liefern.
Ryan Cromwell
Ich glaube nicht, dass Sie die Begriffe "Wert" und "Service" Freund trennen könnten. Ich glaube auch, dass dies jetzt sehr unangebracht ist.
Ron-Damon
0

Ist es nicht offensichtlich, Codeüberprüfungen durchzuführen, bevor Sie Ihren Code einchecken?

TFS funktioniert nicht wie GIT. Wenn Sie also Code in eine Zweigstelle oder in den Trunk einchecken, ist dieser für alle verfügbar.

Dies bedeutet, dass die Überprüfung beim Einchecken erfolgen sollte, damit fehlerhafte Änderungen nicht an jede Arbeitskopie weitergegeben werden.

Byron Whitlock
quelle
Ich würde denken, dass Unit-Tests im Allgemeinen schlechte Änderungen verhindern würden.
John Saunders
@ John Saunders: Betrachten Sie Code Reviews als eine andere Art von Komponententest.
Gilbert Le Blanc
@ Gilbert: Ich könnte das tun, aber dann würde ich nicht ihren Nutzen für Regressionstests bekommen. Ich würde es vorziehen, mehr und bessere Komponententests zu schreiben.
John Saunders
@ John Saunders, @ Gilbert Le Blanc Code-Reviews werden von einem anderen Entwickler durchgeführt, Unit-Tests werden in der Regel vom ursprünglichen Entwickler durchgeführt, die neue Perspektive kann von entscheidender Bedeutung sein.
Ich hatte viel Glück mit Unit-Tests (die Testlisten werden im Voraus vereinbart) und der automatisierten Code-Analyse, möglicherweise kombiniert mit einem Style-Analyse-Tool wie StyleCop. Aber ich arbeite nicht oft mit Nachwuchsentwicklern zusammen.
John Saunders