Dużo kodu jest pisane i scalane bez odpowiedniej recenzji kodu. To może działać. Istnieje powód, dla którego nazywa się to kodowym zapachem, a nie „złamanym kodem” lub coś w tym rodzaju. Brak recenzji kodu jest znakiem ostrzegawczym, a nie zwiastunem zagłady.
Rozwiązaniem tego problemu jest to, że nie ma jednego rozwiązania, które pasowałoby do wszystkich skrzynek, które możemy spakować w odpowiedzi typu StackExchange. Istnieje silna zgoda społeczności programistów, że przegląd kodu jest kluczową „najlepszą praktyką” i w tym przypadku jest pomijany. Twój rozwój nie obejmuje już wąskiego kanału „przestrzegania wszystkich najlepszych praktyk”. Musisz znaleźć własną drogę.
Czym jest „najlepsza praktyka”? Kiedy od razu do tego podchodzisz, jest to zestaw praktyk, które ludzie uważają, że ulepszają kod. Czy poprawiają kod? Na pewno nie! Internet jest zaśmiecony opowieściami firm, które postępowały zgodnie z „najlepszymi praktykami” i wpadły w pułapkę. Być może lepszym punktem widzenia „najlepszych praktyk” jest to, że są to rozwiązania typu „odpal i zapomnij” świata oprogramowania. Nie mogę nic wiedzieć o twojej firmie, twoim projekcie, zespole i być w stanie wymyślić „najlepsze praktyki” jako rzeczy, które ci pomogą. Są ogólną radą „nie szkodzić”.
Wyraźnie odstąpiłeś od tego planu. Na szczęście to rozpoznajesz. Dobra robota! Mówią, że wiedza to połowa sukcesu; jeśli tak, świadomość stanowi ponad połowę tego! Teraz potrzebne jest rozwiązanie. Z twojego opisu jasno wynika, że środowisko biznesowe, w którym się znajdujesz, ewoluowało do tego stopnia, że nudna rada „idź, dokonaj przeglądu kodu, to najlepsza praktyka” nie pozwoli go skrócić. W tym celu zalecam kluczową zasadę, której używam, jeśli chodzi o najlepsze praktyki oprogramowania:
Żadna najlepsza praktyka w zakresie tworzenia oprogramowania nie przewyższa potrzeb biznesowych.
Szczerze mówiąc, płacą wypłatę, a przetrwanie firmy jest zwykle o wiele ważniejsze niż jakość oprogramowania. Nie chcemy tego przyznać, ale doskonale napisane oprogramowanie jest bezużyteczne, jeśli jest uwięzione w ciele firmy umierającej z powodu wysiłków na rzecz utrzymania tego doskonale napisanego oprogramowania.
Więc gdzie idziesz? Podążaj śladem siły. Zauważyłeś, że z jakiegoś nieokreślonego powodu nie ma sensu poddawać się przeglądowi kodu dla jakiegoś zadania. Z mojego doświadczenia wynika, że ten powód jest zawsze doczesny. Zawsze jest to albo „za mało czasu”, albo „za mało pieniędzy, aby pensje płynęły, gdy spędzasz czas”. To jest biznes; w porządku. Gdyby to było łatwe, wszyscy by to zrobili. Podążaj śladem siły w górę i znajdź kierownictwo, które jest w stanie pomóc ci zrozumieć, dlaczego przegląd kodu nie jest opcją. Język jest trudny i dość często dekret ścieka z wyższego kierownictwa i ulega zniekształceniu. Rozwiązanie twojego problemu może być ukryte w tym zniekształceniu.
Odpowiedź na to pytanie jest koniecznie konkretnym scenariuszem przypadku. Jest to podobne do próby przewidzenia, czy rzut monetą będzie głową czy reszką. Najlepsze praktyki mówią, aby obrócić go 100 razy, a oczekiwanie wyniesie około 50 głów i 50 ogonów, ale nie masz czasu, aby obrócić go 1 raz. Tutaj ważne są szczegóły twojej sytuacji. Czy wiesz, że moneta zazwyczaj wyląduje w tej samej orientacji, w jakiej została rzucona przez około 51% czasu? Czy poświęciłeś czas, aby zobaczyć, w którą stronę jest moneta, zanim rzucisz? To może coś zmienić.
Jednym z ogólnych rozwiązań, które mogą być dostępne, jest próba znalezienia sposobu na opracowanie procesu przeglądu kodu i uczynienie go bardzo niskim kosztem. Znaczna część kosztu procesu recenzji kodu polega na tym, że każdy jest w 100% poświęcony recenzji kodu podczas jego wykonywania. Tak musi być, ponieważ po zakończeniu przeglądu kodu kod jest błogosławiony. Być może możesz umieścić kod w innej gałęzi i dokonać przeglądu kodu równolegle z programowaniem na głównym pniu. A może możesz to nawet skonfigurować, aby oprogramowanie przeprowadzało testy za Ciebie. Być może działasz w środowisku biznesowym, w którym klienci mogą uruchamiać „nowy” kod równolegle ze starym i porównywać wyniki. Dzięki temu klienci stają się grupą urządzeń do tworzenia przypadków użycia.
Kluczem do tych wszystkich działających „maybes” jest to, że powinieneś starać się, aby twój kod łatwo rozpadł się na części. Być może będziesz w stanie „udowodnić” fragmenty kodu bez polegania na formalnej weryfikacji kodu poprzez użycie ich w mniej krytycznych projektach. Łatwiej jest to zrobić, jeśli zmiany są mniejsze, nawet jeśli ich suma jest zbyt duża, aby przejrzeć.
Ogólnie szukaj rozwiązań specyficznych dla Twojego projektu, firmy, zespołu. Ogólną odpowiedzią było „najlepsze praktyki”. Nie używasz ich, więc tym razem powinieneś poszukać bardziej niestandardowych rozwiązań tego problemu. To jest biznes. Gdyby wszystko szło zgodnie z oczekiwaniami, IPO byłyby o wiele łatwiej przypisywać wartości, prawda?
Jeśli zastąpienie recenzji kodu jest walką, pamiętaj, że nigdy nie było ani jednego fragmentu kodu, który sprawdziłby się w sprawdzaniu kodu. * Wszystko, co robi przegląd kodu, daje ci zaufanie do kodu i możliwość wprowadzenia poprawek zanim staną się problemem. Oba te cenne produkty przeglądu kodu można uzyskać w inny sposób. Przegląd kodu ma po prostu uznaną wartość, ponieważ jest w tym szczególnie dobry.
* Cóż, prawie: mikrojądro L4 otrzymało już przegląd kodu przez zautomatyzowany system proof, który dowodzi, że jego kod, jeśli skompilowany przez zgodny kompilator C ++, zrobi dokładnie to, co mówi dokumentacja.