Beseitigt Paarprogrammierung die Notwendigkeit von Codeüberprüfungen in einem Extreme Programming (XP) -Projekt?

14

In einem extremen Programmierprojekt programmieren Programmierer die meiste Zeit paarweise.

Da diese Paare auch rotieren, dh Sie das Programm mit verschiedenen Personen paaren und das Gefühl der kollektiven Eigentümerschaft besteht, wird der Quellcode häufig überprüft und aktualisiert.

Muss der Code überprüft werden? Ich meine, hör auf zu programmieren und mache eigentlich nur Code-Reviews.

Eduardo Copat
quelle
3
Pair-Programmierung ist nur ein Mieter von XP. Es gibt viele andere agile Methoden, die XP nicht folgen. Es gibt im Manifest nichts für die agile Softwareentwicklung und auch keine Prinzipien hinter dem agilen Manifest , in denen die Paarprogrammierung erwähnt wird. Es gibt auch nichts über Code-Reviews. Es ist wichtig, nicht anzunehmen, dass alles Agile extrem ist.
Lassen Sie mich meine Frage so umformulieren, dass sie dann nur noch XP enthält.
Eduardo Copat
Gibt es einen Grund, warum Sie es nicht versuchen würden und sicherstellen, dass Sie einige Kriterien festlegen, um aufzuhören? Wenn das Team mit dem Code, der eingecheckt wird, zufrieden ist, sollte das ein guter Grund sein.
JeffO

Antworten:

13

Eine der wichtigsten Ressourcen für Extreme Programming ist das Wiki von Ward, auch bekannt als Portland Pattern Repository oder C2.com . Hier haben eine Reihe von Personen verschiedene Methoden erarbeitet und dokumentiert, wie sie sie verwendet haben.

In diesem Wiki gibt es eine Seite: Extreme Programming Code Reviews , zu der eine Reihe von Mitwirkenden gehören, darunter Ron Jeffries und Kent Beck.

Dazu sagten sie:

Codeüberprüfungen werden von vielen Gurus mit großen Prozessen als wichtig angesehen. Sie sollen die Konformität mit Standards sicherstellen und vor allem sicherstellen, dass der Code klar und effizient ist, funktioniert und über QWAN verfügt. Sie sollten auch dazu beitragen, das Wissen über den Code an den Rest des Teams weiterzugeben.

ExtremeProgramming setzt voraus, dass die gesamte Entwicklung von zwei Ingenieuren gemeinsam durchgeführt wird. Der Code wird tatsächlich im laufenden Betrieb zu einem großen Teil überprüft. Dies stellt sicher, dass mehr als eine Person den Code jederzeit genau kennt.

ExtremeProgramming setzt voraus, dass alle Objekte UnitTests haben. Diese stellen sicher, dass das Objekt funktioniert und wie geändert weiterarbeitet.

Einige Sprachen reflektieren. In solchen Sprachen können UnitTests direkt prüfen, ob wichtige Standards eingehalten werden. (Objekte müssen z. B. sowohl # = als auch #hash implementieren oder keines.)

ExtremeProgramming praktiziert CollectiveCodeOwnership, was bedeutet, dass Objekte, die Aufmerksamkeit benötigen, von vielen Entwicklern durchsucht werden. Dies führt tendenziell zu Druck auf diejenigen, die Code erstellen, der nicht den Standards entspricht. Entwickler, die sie besuchen, werden aufgefordert, den Code in Übereinstimmung zu bringen, wenn sie Abweichungen feststellen. Dies stellt auch sicher, dass das Wissen über den Code über das ursprüngliche Programmiererpaar hinaus verbreitet wird, das ihn erstellt hat.

Daher erfordern ExtremeProgramming-Projekte keine expliziten Überprüfungen. Löschen Sie sie aus Ihrer Methodik.

Es gibt auch einige Diskussionen von anderen zu diesem Thema.

Die wichtigsten Punkte sind jedoch, dass mit der Kombination aus Tests, gemeinsamer Eigentümerschaft und Paarprogrammierung die Ziele gelöst werden, die eine Codeüberprüfung normalerweise erreichen soll, z.

  • Verteilen Sie das Wissen darüber, was getan wird
  • Ein zweiter (oder mehr) Satz Augäpfel auf dem Code, um sicherzustellen, dass er den Standards entspricht
  • Überprüfen Sie die korrekte Funktion des Codes

Diese werden kontinuierlich durch Paarprogrammierung und automatisierte Tests in Extreme Programming durchgeführt, sodass eine explizite Fagan-Prüfung nicht erforderlich ist.

Verwandte Lesung:


quelle
4
Ich argumentierte in einem anderen Q & A, dass die Codeüberprüfung eine unnötige Verschwendung ist (im schlanken Sinne des Wortes) und dass die Paarprogrammierung die bevorzugte Methode sein sollte, um alle Vorteile zu bieten, die eine Codeüberprüfung bieten würde. Unnötig zu erwähnen, dass die Leute meine Argumentation angegriffen haben, weil ich sie nicht mit THE VOICE OF AUTHORITY (TM) untermauert habe, wie Sie es getan haben. Für eine Gruppe von Menschen, die sich Tag für Tag mit Logik befassen, sind wir ein unlogischer Haufen.
Michael Brown
6
Das Risiko einer Paarprogrammierung ohne zusätzliche Codeüberprüfungen besteht darin, dass beide Programmierer zum Zeitpunkt des Schreibens stark involviert sind und möglicherweise Code schreiben, der zu diesem Zeitpunkt völlig klar und logisch erscheint, jedoch weniger, wenn er nach einigen Tagen erneut angezeigt wird. Wie groß und / oder akzeptabel dieses Risiko ist, hängt von Ihrer Organisation ab.
Bart van Ingen Schenau
@ MikeBrown Sie könnten auch argumentieren, dass Pair Programming eine unnötige Verschwendung ist und dass Code-Überprüfung usw. usw.
AlexFoxGill
Sehen Sie, was ich mit WASTE meinte, war die "schlanke" Definition des Wortes. Denken Sie an den typischen Fließbandprozess. Die Idee ist, das Auto so schnell wie möglich auf den Markt zu bringen und die Qualität nachträglich zu überprüfen (Code-Überprüfung). Lean-Prinzipien erfordern etwas mehr Zeit und Mühe, um die Qualität zu verbessern (Paarprogrammierung), so dass die Nachprüfung unnötig wird.
Michael Brown