Ocenianie osób w przeglądzie jest sprzeczne z najbardziej udanymi systemami, z którymi pracowałem, a może wszystkim. Ale celem, który staram się osiągnąć od ponad 20 lat, jest zmniejszenie liczby błędów i zwiększenie wydajności na godzinę pracy inżyniera. Jeśli ocenianie osób jest celem, przypuszczam, że można by użyć recenzji. Nigdy nie widziałem sytuacji, w której byłby potrzebny, jako pracownik lub lider.
Niektóre obiektywne badania (Fagan itp.) I wiele popularnych mądrości sugeruje, że relacje rówieśnicze ułatwiają przeglądanie kodu w celu ograniczenia błędów i zwiększenia wydajności. Pracujący kierownicy mogą brać udział jako pracownicy, ale nie jako kierownicy. Podkreślono punkty dyskusji, zmiany w celu zadowolenia recenzentów są na ogół dobrą rzeczą, ale nie są wymagane. Stąd relacja rówieśnicza.
Wszelkie zautomatyzowane narzędzia, które można zaakceptować bez dalszej analizy lub osądu, są dobre - Cint , C ++, Java. Regularna kompilacja. Kompilatory są NAPRAWDĘ dobre w znajdowaniu błędów kompilatora. Dokumentowanie odchyleń w automatycznych czekach brzmi jak subtelne oskarżenie o automatyczne kontrole. Dyrektywy kodowe (podobnie jak Java), które dopuszczają odchylenia, są dość niebezpieczne, IMHO. Idealne do debugowania, aby szybko uzyskać sedno sprawy. Nie tak dobrze jest znaleźć w źle udokumentowanym, 50 000 wierszu kodu bez wiersza komentarza, za który stałeś się odpowiedzialny.
Niektóre zasady są głupie, ale łatwe do egzekwowania; domyślne dla każdej instrukcji switch, nawet jeśli są nieosiągalne, na przykład. To tylko pole wyboru i nie musisz tracić czasu i pieniędzy na testowanie z wartościami, które niczego nie pasują. Jeśli masz zasady , będziesz głupotą , są nierozerwalnie powiązane . Każda korzyść z reguły powinna być warta głupoty, którą to kosztuje, a związek ten powinien być sprawdzany w regularnych odstępach czasu.
Z drugiej strony „biegnie” nie ma cnoty przed przeglądem ani obrony w przeglądzie. Jeśli rozwój postępował zgodnie z modelem wodospadu , chciałbyś dokonać przeglądu, gdy kodowanie zakończy się w 85%, zanim zostaną znalezione i opracowane skomplikowane błędy, ponieważ przegląd jest tańszym sposobem na ich znalezienie. Ponieważ prawdziwe życie nie jest modelem wodospadu, kiedy przeglądanie jest czymś w rodzaju sztuki i jest normą społeczną. Ludzie, którzy faktycznie czytają Twój kod i szukają w nim problemów, są z litego złota. Zarządzanie, które wspiera to na bieżąco, to perła ponad cenę. Recenzje powinny przypominać meldowanie się - wcześnie i często .
Uważam, że te rzeczy są korzystne:
1) Brak wojen stylowych . Tam, gdzie idą otwarte nawiasy klamrowe, należy sprawdzać spójność tylko w danym pliku. Wszystkie takie same. W porządku. Podobnie głębokość wcięcia ** si ** szerokości zakładek . Większość organizacji odkrywa, że potrzebuje wspólnego standardu tab, który jest używany jako duża przestrzeń.
2) `Obdarty
looking
tekst, który nie ma
line up is hard to read
dla treści.`
BTW, K&R wcięły pięć (PIĘĆ) spacji, więc apele do autorytetu są bezwartościowe. Po prostu bądź konsekwentny.
3) Przed przeglądem należy podać numer, niezmienną, publicznie dostępną kopię pliku do przejrzenia na co najmniej 72 godziny.
4) Brak projektowania w locie. Jeśli występuje problem lub problem, zanotuj jego lokalizację i ruszaj się.
5) Testowanie wszystkich ścieżek w środowisku programistycznym jest bardzo, bardzo, bardzo dobrym pomysłem. Testy, które wymagają ogromnych danych zewnętrznych, zasobów sprzętowych, korzystania z witryny klienta itp., To testy, które kosztują fortunę i nie będą dokładne.
6) Format pliku inny niż ASCII jest dopuszczalny, jeśli narzędzia do tworzenia, wyświetlania, edycji itp. Istnieją lub są tworzone na wczesnym etapie rozwoju. To moja osobista stronniczość, ale w świecie, w którym dominujący system operacyjny nie jest w stanie wyjść z siebie z mniej niż 1 gigabajtem pamięci RAM, nie rozumiem, dlaczego pliki mniejsze niż, powiedzmy, 10 megabajtów powinny być czymkolwiek inny niż ASCII lub inny format obsługiwany komercyjnie. Istnieją standardy grafiki, dźwięku, filmów, plików wykonywalnych i towarzyszących im narzędzi. Nie ma usprawiedliwienia dla pliku zawierającego binarną reprezentację pewnej liczby obiektów.
W celu konserwacji, refaktoryzacji lub opracowania zwolnionego kodu jedna grupa współpracowników wykorzystałem recenzję przez jedną inną osobę, siedzącą przy wystawie i patrzącą na różnicę między starym a nowym , jako bramą do odprawy oddziału. Podobało mi się, było tanie, szybkie, stosunkowo łatwe do zrobienia. Wskazówki dla osób, które nie przeczytały wcześniej kodu, mogą być pouczające dla wszystkich, ale rzadko poprawiają kod programisty.
Jeśli jesteś rozproszony geograficznie, patrzenie na różnice na ekranie podczas rozmowy z kimś innym patrząc na to samo byłoby stosunkowo łatwe. Obejmuje to dwie osoby patrzące na zmiany. W przypadku większej grupy, która przeczytała dany kod, wiele witryn nie jest trudniejsze niż wszystkie w jednym pokoju. Wiele pokoi połączonych wspólnymi ekranami komputerowymi i squak-boxami działa bardzo dobrze, IMHO. Im więcej witryn, tym bardziej potrzebne jest zarządzanie spotkaniami. Menedżer jako facylitator może tutaj zarobić na utrzymanie. Pamiętaj, aby nadal odpytywać witryny, w których Cię nie ma.
W pewnym momencie ta sama organizacja przeprowadziła automatyczne testy jednostkowe, które wykorzystano jako testy regresyjne. To było naprawdę miłe. Oczywiście zmieniliśmy wtedy platformy i automatyczny test został pominięty. Recenzja jest lepsza, jak zauważa Manifest Agile , relacje są ważniejsze niż proces lub narzędzia . Ale po przejrzeniu opinii automatyczne testy jednostkowe / testy regresji są kolejną najważniejszą pomocą w tworzeniu dobrego oprogramowania.
Jeśli możesz oprzeć testy na wymaganiach , cóż, jak mówi dama w „When Harry Met Sally” , będę miał to, co ona ma!
Wszystkie recenzje muszą mieć parking, aby uchwycić wymagania i problemy projektowe na poziomie powyżej kodowania. Gdy coś zostanie uznane na parkingu, dyskusja powinna się zakończyć.
Czasami myślę, że przegląd kodu powinien być jak przegląd schematów w projektowaniu sprzętu - całkowicie publiczny, dokładny, samouczek, koniec procesu, brama, po której jest budowany i testowany. Ale przeglądy schematyczne są bardzo ciężkie, ponieważ zmiana fizycznych obiektów jest droga. Przegląd architektury, interfejsu i dokumentacji oprogramowania powinien być prawdopodobnie ciężki. Kod jest bardziej płynny. Przegląd kodu powinien być lżejszy.
Myślę, że pod wieloma względami technologia dotyczy zarówno kultury i oczekiwań, jak i konkretnego narzędzia. Pomyśl o wszystkich improwizacjach „ Swiss Family Robinson ” / Flintstones / McGyver, które zachwycają serce i rzucają wyzwanie umysłowi. Chcemy, żeby nasze rzeczy działały . Nie ma do tego ani jednej ścieżki, podobnie jak „inteligencja”, którą można by jakoś wyabstrahować i zautomatyzować za pomocą programów AI z lat 60 .