Czy programowanie w parach eliminuje potrzebę recenzji kodu w projekcie Extreme Programming (XP)?

14

W ekstremalnym projekcie programistycznym programiści przez większość czasu programują w parach.

Ponieważ te pary również się zmieniają, to znaczy, że łączysz program z różnymi ludźmi i istnieje poczucie wspólnej własności, kod źródłowy jest często sprawdzany i aktualizowany.

Skoro tak, to czy potrzebne są recenzje kodu? Mam na myśli, przestań programować i po prostu rób recenzje kodu.

Eduardo Copat
źródło
3
Programowanie w parach to tylko najemca XP. Istnieje wiele innych zwinnych metodologii, które nie są zgodne z XP. Nie ma nic w Manifeście dla Agile Software Development ani zasad za Agile Manifesto , który wspomina programowania parami. Nie ma też nic w recenzjach kodu. Ważne jest, aby nie zakładać, że cała zwinność jest ekstremalna.
Pozwól mi przeformułować moje pytanie, tak aby zawierało tylko XP.
Eduardo Copat,
Czy istnieje powód, dla którego nie próbowałbyś tego zrobić i upewnić się, że ustawiłeś pewne kryteria zatrzymania? Jeśli zespół czuje się dobrze z kodem rejestrowanym, powinien to być wystarczający powód.
JeffO,

Odpowiedzi:

13

Jednym z kluczowych zasobów do programowania ekstremalnego jest Wiki Wiki Warda, czyli Portland Pattern Repository, czyli C2.com . W tym miejscu wiele osób opracowało różne metodologie i udokumentowało je podczas ich stosowania.

Na tej wiki znajduje się strona: Extreme Programming Code Reviews, która ma wielu współpracowników, w tym Rona Jeffriesa i Kenta Becka.

Do tego powiedzieli:

Przeglądy kodu są uważane przez wielu guru za duże procesy. Mają one na celu zapewnienie zgodności ze standardami, a co ważniejsze, mają na celu zapewnienie, że kod jest przejrzysty, wydajny, działa i ma QWAN. Zamierzali również pomóc w rozpowszechnieniu wiedzy o kodzie wśród reszty zespołu.

ExtremeProgramming wymaga, aby cały rozwój był wykonywany przez dwóch inżynierów pracujących razem. Kod jest sprawdzany w locie, w dość dużym stopniu. Zapewnia to, że więcej niż jedna osoba ma ścisłą znajomość kodu przez cały czas.

ExtremeProgramming wymaga, aby wszystkie obiekty miały testy UnitTest. Zapewniają one działanie obiektu i kontynuację działania po zmodyfikowaniu.

Niektóre języki są refleksyjne. W takich językach UnitTests mogą bezpośrednio sprawdzać zgodność z ważnymi standardami. (np. obiekty muszą implementować zarówno # = i # skrót, lub żadne.)

ExtremeProgramming praktyk CollectiveCodeOwnership, co oznacza, że ​​obiekty wymagające uwagi będą przeglądane przez wielu programistów. Wywiera to presję na producentów kodu, który nie jest zgodny ze standardami. Zachęca się / oczekuje się od programistów odwiedzających, aby dostosowali kod, gdy znajdą odchylenia. Zapewnia to również rozpowszechnianie wiedzy o kodzie poza początkową parą programistów, którzy go stworzyli.

Dlatego projekty ExtremeProgramming nie wymagają wyraźnych recenzji. Usuń je ze swojej metodologii.

Tam jest też trochę więcej dyskusji na ten temat od innych.

Najważniejsze jest jednak to, że w połączeniu z testami, współwłasnością i programowaniem w parach, te rzeczy rozwiązują cele, które zwykle powinien wykonywać przegląd kodu, takie jak:

  • Rozproszyć wiedzę o tym, co się dzieje
  • Drugi (lub więcej) zestaw gałek ocznych w kodzie, aby upewnić się, że jest zgodny ze standardami
  • Sprawdź poprawność działania kodu

Są one wykonywane w sposób ciągły poprzez programowanie parami i automatyczne testowanie w programowaniu ekstremalnym, a zatem wyraźna kontrola Fagana nie jest konieczna.

Powiązana lektura:


źródło
4
W innym pytaniu argumentowałem, że przegląd kodu jest niepotrzebnym marnotrawstwem (w sensie Lean) i że programowanie par powinno być preferowaną metodą zapewniania wszystkich korzyści, jakie zapewnia przegląd kodu. Nie trzeba dodawać, że ludzie obrazili się z mojego argumentu, ponieważ nie poparłem go GŁOSEM AUTORYZACJI, tak jak ty. Dla grupy ludzi, którzy codziennie zajmują się logiką, jesteśmy nielogiczną grupą.
Michael Brown,
6
Ryzyko robienia programowania w parach bez dodatkowych recenzji kodu polega na tym, że obaj programiści są mocno zaangażowani w momencie pisania i mogą pisać kod, który wydaje się wtedy całkowicie klarowny i logiczny, ale mniej, gdy pojawi się ponownie po kilku dniach. To, jak duże i / lub akceptowalne jest to ryzyko, zależy od organizacji.
Bart van Ingen Schenau,
@MikeBrown możesz również argumentować, że programowanie w parach jest niepotrzebnym marnotrawstwem i że przegląd kodu powinien itp.
AlexFoxGill
Zobacz, co miałem na myśli przez ODPADY, to „Lean” definicja tego słowa. Pomyśl o typowym procesie na linii montażowej. Chodzi o to, aby jak najszybciej doprowadzić samochód do końca, a po fakcie przeprowadzane są kontrole jakości (przegląd kodu). Zasady Lean wymagają poświęcenia nieco więcej czasu i wysiłku na budowanie jakości w (programowanie parami), dzięki czemu sprawdzenie postu staje się niepotrzebne.
Michael Brown,