Chcę udokumentować mój kod w taki sposób, aby minimalne zapotrzebowanie na czytanie i przeglądanie kodu było możliwe kilka miesięcy później.
Wiem, że istnieją różne rodzaje dokumentacji (w kodzie źródłowym i na zewnątrz, diagramy sekwencji itp.).
Chcę tylko wiedzieć, jaki jest skuteczny sposób na udokumentowanie mojego kodu, aby gdy kilka miesięcy później chcę zobaczyć mój kod, spędzam mniej czasu na czytaniu kodu i zrozumieniu przepływu kodu.
Odpowiedzi:
Muszę przyznać, że nie zgadzam się z niektórymi rzeczami zalecanymi przez inne odpowiedzi, więc zamierzam rzucić dwa centy;
Komentarze
Dokumentacja jest wyjątkowo pomocna dla nieznajomych czytających Twój kod. Zwykle wiele rzeczy nie jest wystarczająco gadatliwych, aby można je było przeczytać i zrozumieć od razu, a następnie powinieneś wyjaśnić, co robisz.
Edycja : dyskusja w sekcji komentarzy wskazała coś słusznego - nadmierne komentowanie zwykle odbywa się podczas pisania złego kodu.
Komentowanie twojej pracy powinno być precyzyjne i minimalne, ale moim zdaniem zdecydowanie powinno być obecne. Przynajmniej komentarz na każde 15 linii kodu. Na przykład nad blokami kodu dodaj wiersz o tym, co robisz:
Minimalne komentarze wyjaśniające, dlaczego i co robisz, są bardzo pomocne w całym kodzie. Nie zgadzam się z odpowiedzią, która stwierdza
Wiele razy, z wdziękiem, udokumentowano dobry kod. Prawdą jest, że źli programiści widzą swoją dokumentację w stylu: „W porządku, mój kod jest zły, dodajmy kilka zdań, aby było jaśniej”.
Tak, i chociaż zdarza się to dość często, prawdą jest również, że dobrzy programiści, którzy piszą czysty kod, również chcą mieć pewność, że powrócą do swojego kodu i zrozumieją, dlaczego chcą, aby jego funkcja zachowywała się w ten sposób lub dlaczego potrzebowali tego linia, która wydaje się nieco zbędna itp.
Tak, komentarze wyjaśniające oczywiste rzeczy, niejasne komentarze, komentarze, które zostały właśnie zebrane, aby upewnić się, że „ten kod jest udokumentowany, tak, cokolwiek”, mają zapach kodu. Sprawiają, że czytanie kodu jest trudniejsze i irytujące. (Dodanie przykładu poniżej)
Ale komentarze, które są zgodne ze standardami, wyjaśniają dlaczego, a nie jak, i odpowiadają na właściwe pytania , są bardzo ( bardzo ) pomocne.
Komentarze wbudowane
Jednej rzeczy NIE powinieneś (a gdybym mógł napisać to większe, zrobiłbym), jest pisanie komentarzy w tym samym wierszu kodu. To sprawia, że komentarze są bardzo specyficzne dla linii, co całkowicie pomija cel komentowania twojego kodu.
Na przykład złe komentarze w tekście:
Znacznie łatwiej byłoby odczytać i zrozumieć ten kod bez komentarzy, co czyni bałagan i nieczytelnym.
Zamiast tego komentarze w kodzie powinny znajdować się nad blokami kodu i powinny odpowiadać na ważne pytania, które mogą pojawić się podczas czytania bloku kodu.
O wiele jaśniej, prawda? Teraz już wiesz, że musisz użyć
login()
funkcji i podać parametrysend_mail()
we wszystkim, czego użyłeś. Pomaga trochę, ale wciąż brakuje jednej rzeczy.Dokumentacja funkcji
Był szeroko dyskutowany. Powinieneś zawsze poinformować czytelników, o czym jest twoja funkcja, dlaczego i co robi. Jak to robi, nie należy to do dokumentacji, ale może do przypisów funkcji.
Powinieneś jasno opisać, czego oczekujesz od swoich parametrów, a jeśli chcesz, aby zostały uzyskane / utworzone w określonej metodzie. Powinieneś zadeklarować, jaką funkcję ma zwrócić funkcja, jakie jest jej użycie itp.
Znowu taka jest moja opinia i metodologia podczas pisania mojego kodu. Nie tylko te, ale to tylko niektóre rzeczy, których nie mogłem zgodzić się z innymi odpowiedziami. No i oczywiście nie tylko komentarze odczytują twój kod, ale sam kod. Napisz czysty kod, zrozumiały i łatwy w utrzymaniu . Pomyśl o swoim własnym ja podczas kodowania ;-)
źródło
IMO najlepszą dokumentacją jest dokumentacja, której tak naprawdę nie potrzebujesz. Nienawidzę także pisania dokumentacji i komentarzy.
Powiedziawszy to:
n
, ale zamiast tegonumberOfItemsFound
na przykład.źródło
numberOfItemsFound
jest jednak dość gadatliwy; zbyt gadatliwy jest również problem.Traktuj swój kod jako dokumentację
Twój kod jest twoją podstawową dokumentacją. Dokładnie opisuje, co faktycznie robi wynikowa aplikacja, biblioteka lub cokolwiek innego. W związku z tym wszelkie próby przyspieszenia zrozumienia tego kodu muszą zaczynać się od samego kodu.
Wiele napisano na temat pisania czytelnego kodu, ale niektóre kluczowe punkty to:
n
jest dobry dla pętli, dłuższe nazwy opisowe są potrzebne dla elementów o większym zakresie),UpdtTbl
z komentarzem wyjaśniającym, że aktualizuje tabelę o dostarczone reguły, kiedyUpdateTableContentsWithSuppliedRules
może być używana jako nazwa,Lepiej czytać kod
Czytanie kodu, niezależnie od tego, jak proste jest, jest wyuczoną umiejętnością. Nikt z natury nie jest dobry w czytaniu kodu. To wymaga praktyki; dużo praktyki. Na przykład przejdź do Github lub cokolwiek innego i przeczytaj kod używanych bibliotek, a nie tylko tych bibliotek. Znajdź kod do przeczytania i odczytu.
Komentarze to zapach kodu
Dopiero wtedy dochodzimy do innych rodzajów dokumentacji. Po pierwsze, jak już wspomniano, unikaj komentarzy. Jeśli napotkam kod zawierający komentarze, przygotowuję się na najgorsze: kod prawdopodobnie będzie zły, a szczerze mówiąc, komentarze również mogą być złe. Ktoś, kto nie potrafi dobrze komunikować się za pomocą kodu, raczej nie będzie w stanie lepiej komunikować się za pomocą języka naturalnego.
Strzeż się dokumentacji API generowanej automatycznie
Uważaj też na dokumentację API generowaną automatycznie. Jeśli będę musiał czytać takie dokumenty, to dlatego, że twój kod jest tak trudny do odczytania. Ponownie, zrób kod prosty i będę mógł go odczytać bezpośrednio.
Testy też są dokumentami
Testy są również dokumentacją. Więc nie traktuj swoich testów jednostkowych jako uciążliwości. Potraktuj je jako sposób komunikowania się z innymi (twoje sześciomiesięczne później bycie tutaj), jak działa kod i jest przeznaczony do użycia.
Narysuj zdjęcia, jeśli to pomoże
Jeśli podoba Ci się UML, to na pewno znajdź dobre narzędzie i generuj diagramy UML ze swojego kodu. Po prostu nigdy nie próbuj używać go do generowania kodu. Nie jest dobry jako narzędzie do projektowania, w wyniku czego powstanie okropny kod.
Mieć dokument „1000 stóp”
Na koniec napisz sobie dokument poglądowy. Czym zajmuje się aplikacja? Jak to robi? Z jakimi innymi systemami się łączy? Rzeczy jak te. Nie próbuj jednak opisywać tutaj struktury kodu. Niech kod to zrobi. Niech ten dokument przypomni Ci, dlaczego napisałeś kod w pierwszej kolejności.
źródło
add 1 to i
, komentarze powinny wyjaśniać, dlaczego kod robi to, co robi. Na przykład, kodif (!something.Exists()) {...}
może użyć komentarza w stylu:// something exists only when (explanation of the broader scenario)
.// increment x
x++;
komentarzy, które są bezużyteczne, ale źle jest wylewać dziecko z kąpielą i twierdzić, że komentarze są zawsze złe. Na przykład komentarze do formularza// this case should never happen because xyz
throw exception "unreachable"
.//XXX: Not using straight-forward method Foo here because ...
. Takie komentarze mogą być niezwykle cenne, ale z oczywistych powodów nie można ich przekazać kodem.Podaj list motywacyjny
O ile nie jesteś w bardzo technicznej dziedzinie, większość pytań dotyczących kodu nie dotyczy „jak”, ale „dlaczego” lub „co”.
W związku z tym sposobem na ograniczenie liczby osób zaglądających do kodu jest napisanie jego krótkiego opisu. Zaletą tego jest to, że można dość łatwo skompilować przegląd opisów i że jest to znacznie łatwiej dostępne. (Nawet osobom, które nie chcą / nie mogą zobaczyć kodu).
Nawet jeśli ludzie są techniczni, list motywacyjny powinien zawierać wskazówki, gdzie powinni czegoś szukać.
Proste bardzo minimalistyczne punkty:
Przykład
źródło
Największy przyrost prędkości zwykle uzyskuję z budowania osobnych zatwierdzeń, z których każdy reprezentuje pośredni krok, który się kompiluje i działa.
Więc jeśli muszę wprowadzić nowy parametr do funkcji w celu zaimplementowania określonej funkcji, to jest jeden zatwierdzenie, które nie robi nic poza dodaniem parametru w deklaracji, w definicji i we wszystkich witrynach wywołań. Następnie kolejne zatwierdzenie wprowadza funkcjonalność, a trzecie aktualizuje strony wywołujące, które korzystają z nowej funkcji.
Łatwo to przejrzeć, ponieważ zmiany czysto mechaniczne można szybko przejrzeć, a następnie zejść im z drogi.
Podobnie, jeśli sformatujesz kod, zawsze powinno to być osobne zatwierdzenie.
źródło
Chociaż istnieją istniejące pozorne różnice zdań między istniejącymi odpowiedziami, choćby dla podkreślenia, postaram się streścić zwykłą poradę w sposób, który wyjaśni, skąd wszyscy pochodzą:
Z drugiej strony, jeśli coś, prawdopodobnie popełniam błąd zbyt daleko, prawie nigdy nie używam komentarzy. Twoi recenzenci kodu poinformują cię, czy masz równowagę w niewłaściwym dla nich miejscu, ale jeśli podejmiesz świadomy wysiłek, aby zastosować się do powyższego 3-punktowego planu, prawdopodobnie i tak będziesz blisko ich optymalnego poziomu.
źródło