Jak udokumentować kod?
Masz już podpowiedź: spójrz na dokumentację Java API.
Mówiąc bardziej ogólnie, nie ma unikalnego zestawu zasad, które mają zastosowanie do każdego projektu. Kiedy pracuję nad kluczowymi dla biznesu projektami na dużą skalę, dokumentacja nie ma nic wspólnego z tą, którą napisałbym dla małej biblioteki open source, która z kolei nie ma nic wspólnego z dokumentacją mojego osobistego projektu na średnią skalę .
Dlaczego wiele projektów open source nie jest dobrze udokumentowanych?
Ponieważ większość projektów o otwartym kodzie źródłowym są tworzone przez ludzi, którzy przyczyniają się do tych projektów, ponieważ jest to zabawne. Większość programistów i programistów uważa, że pisanie dokumentacji nie jest wystarczająco zabawne, aby robić to za darmo.
Dlaczego wiele projektów z zamkniętym źródłem nie jest dobrze udokumentowanych?
Ponieważ kosztuje ogromną sumę (1) napisanie dobrej dokumentacji i (2) utrzymanie jej.
Bezpośredni koszt (koszt sporządzenia dokumentacji) jest wyraźnie widoczny dla interesariuszy: jeśli Twój zespół poprosi o poświęcenie kolejnych dwóch miesięcy na dokumentowanie projektu, musisz zapłacić dwa dodatkowe miesiące wynagrodzenia.
Koszt długoterminowy (koszt utrzymania dokumentacji) staje się zauważalny również dość łatwo dla menedżerów i jest często pierwszym celem, gdy muszą obniżyć koszty lub skrócić opóźnienia. Powoduje to dodatkowy problem nieaktualnej dokumentacji, która szybko staje się bezużyteczna, a jej aktualizacja jest niezwykle kosztowna.
Z drugiej strony trudno jest zmierzyć długoterminowe oszczędności (oszczędności wynikające z niepotrzebnego marnowania kilku dni na zapoznanie się ze starszym kodem tylko po to, aby zrozumieć podstawową rzecz, którą powinno się udokumentować lata temu), co potwierdza odczucia niektórych menedżerów pisanie i utrzymywanie dokumentacji to strata czasu.
Często obserwuję, że:
Na początku zespół chętnie dużo dokumentuje.
Z czasem presja terminów i brak zainteresowania sprawiają, że utrzymanie dokumentacji jest coraz trudniejsze.
Kilka miesięcy później nowa osoba, która dołącza do projektu, praktycznie nie może korzystać z dokumentacji, ponieważ w ogóle nie odpowiada ona rzeczywistemu systemowi.
Zauważając to, kierownictwo obwinia programistów za brak obsługi dokumentacji; programiści proszą o zaktualizowanie go przez kilka tygodni.
Jeśli kierownictwo przyzna na to kilka tygodni, cykl się powtarza.
Jeśli kierownictwo odmówi, na podstawie wcześniejszych doświadczeń, tylko pogorszy złe doświadczenia, ponieważ produkt nie ma dokumentacji, ale kilka miesięcy spędzono na jej pisaniu i utrzymywaniu.
Dokumentacja powinna być ciągłym procesem, podobnie jak testowanie. Spędź tydzień na kodowaniu kilku tysięcy LOC, a powrót do testów i dokumentacji jest bardzo, bardzo bolesny.
Jak zachęcić zespół do napisania dokumentacji?
Podobnie jak sposoby zachęcania ludzi do pisania czystego kodu, regularnego refaktoryzowania, używania wzorców projektowych lub dodawania wystarczającej liczby testów jednostkowych.
Dawaj dobry przykład. Jeśli napiszesz dobrą dokumentację, twoje pary też mogą zacząć to robić.
Wykonuj systematyczne przeglądy kodu, w tym formalne przeglądy kodu mające na celu sprawdzenie dokumentacji.
Jeśli niektórzy członkowie zespołu są szczególnie antypatyczni wobec dobrej dokumentacji (lub dokumentacji), przedyskutuj z nimi ten temat prywatnie, aby zrozumieć, jakie są przeszkody, które uniemożliwiają im napisanie lepszej dokumentacji. Jeśli obwiniają brak czasu, widzisz źródło problemów.
Uczyń obecność lub brak dokumentacji mierzalnymi przez kilka tygodni lub miesięcy, ale nie skupiaj się na tym. Na przykład możesz zmierzyć liczbę wierszy komentarzy na LOC, ale nie rób z tego stałego pomiaru, w przeciwnym razie programiści zaczną pisać długie, ale pozbawione znaczenia komentarze, aby pozbyć się niskich wyników.
Użyj grywalizacji. Towarzyszy temu poprzedni punkt.
Użyj wzmocnienia dodatniego / ujemnego .
(Zobacz komentarz SJuan76 ) Traktuj brak komentarzy jako błędy. Na przykład w Visual Studio można zaznaczyć opcję generowania dokumentacji XML. Jeśli sprawdzisz również, czy wszystkie ostrzeżenia są traktowane jako błędy, brak komentarza na szczycie klasy lub metody zatrzyma kompilację.
Jeśli chodzi o trzy poprzednie punkty, tego należy używać ostrożnie. Używałem go przez pewien czas ze szczególnie trudnym zespołem początkujących programistów, a skończyło się na takich komentarzach zgodnych z StyleCop:
/// <summary>
/// Gets or sets the PrimaryHandling.
/// </summary>
public Workflow PrimaryHandling { get; set; }
które nie były szczególnie pomocne.
Pamiętaj: nic zautomatyzowanego nie pomoże ci znaleźć złych komentarzy, gdy programiści chcą się z tobą pograć . Pomogą w tym tylko recenzje kodu i inne ludzkie czynności.
Czy są jakieś dobre przykłady tego, kiedy potrzebna jest minimalna dokumentacja lub jej brak?
Dokumentacja wyjaśniająca architekturę i projekt nie jest potrzebna:
Dla prototypu
W przypadku osobistego projektu napisanego w ciągu kilku godzin w celu wykonania zadania, mając pewność, że ten projekt nie będzie już dłużej utrzymywany,
W przypadku każdego projektu, w którym jest to oczywiste, biorąc pod uwagę jego niewielki rozmiar w połączeniu ze szczególnie czystym kodem, poświęcisz więcej czasu na pisanie dokumentacji niż wszyscy przyszli opiekunowie badający kod.
Dokumentacja w kodzie (komentarze do kodu) nie jest potrzebna według niektórych programistów, gdy kod jest samodokumentujący. Dla nich obecność komentarzy, z wyjątkiem rzadkich przypadków, nie jest dobrym znakiem, ale znakiem, że kod nie został wystarczająco zreformowany, aby był przejrzysty bez potrzeby komentowania.
Uważam, że po dostarczeniu projektu powinniśmy przejrzeć dokumentację.
Jeśli Twój projekt jest dostarczany co najmniej raz w tygodniu, jest to właściwy sposób. Jeśli Twój projekt nie jest sprawny i jest dostarczany w odstępach sześciomiesięcznych, zrób więcej regularnych recenzji.