Hubert
Wesołowski
Człowiek od krycia
dachów podczas
deszczu (mokrej
roboty).
Temat: pisanie dokumentacji, doswiadczenia/przemyslenia/uwagi
Witam,zainspirowany sąsiednim wątkiem postanowiłem stworzyć własny do dyskusji natury ogólnej.
Interesuje mnie Wasze podejście i doświadczenia z dokumentowaniem kodu (proszę nie pisać o manualach i instrukcjach gdzie kliknąć żeby..., chodzi o dokumentacje dla programistów mających rozwijać dalej dany projekt).
Wiem: temat rzeka...
Moje doświadczenia z różnymi sposobami dokumentowania:
- dokumentacja tworzona na bieżąco.
Wady:
prawie nigdy nie dotyczy aktualnej wersji kodu, jest zawsze do tyłu - projekty się zmieniają, tego nie unikniemy - na zmianę doku często nie ma czasu/chęci/motywacji.
Zalety:
czas poświęcany dokumentacji nie jest mocno widoczny dla przełożonych, dzięki temu nie ma pokusy zabrania go. Jesteśmy świeżutko po napisaniu kodu - najlepszy czas na udokumentowane go, czasem pisanie dokumentacji pozwala na refleksję i dobry refactoring. Co myślicie o pomyśle dokumentowania tylko nieswojego kodu? Przy okazji mamy koleżeńską inspekcję kodu oraz załatwione zastępstwo.
- dokumentacja tworzona po ukończeniu projektu.
Wady:
pewne rzeczy były pisane pół roku albo i rok temu... pokusa zabrania tego czasu przez przełożonych (przecież bez dokumentacji też działa, a są inne pilniejsze rzeczy które będą zarabiać $...). Dłuższe pisanie dokumentacji źle wpływa na programistów ;-).
Zalety:
dokumentacja zawsze opisuje aktualną wersję kodu.
- "brak dokumentacji", czyli samokumentujący się kod
Zalety:
powstaje na bieżąco, dotyczy aktualnej wersji kodu, nie ma możliwości zabrania czasu przeznaczonego na dokumentację.
Wady:
rezygnacja z eleganckich rozwiązań na rzecz rozwiązań czytelnych jest traktowana na (+) - skomplikowane, wielopoziomowe modele abstrakcji nie są raczej mile widziane itp., długaśne nazwy metod i atrybutów, dbanie o nieskomplikowany przepływ sterowania.
Mi osobiście najbliżej do 3 opcji, chociaż czasem warto popełnić coś złożonego jeśli poprze się to odpowiednim diagramem, ale to raczej "od święta". Na co dzień staram się pisać prosto, tak aby osoba przejmująca po mnie kod mająca pojęcie o szkielecie framework'a była w stanie łatwo prześledzić działanie kodu. Minusem jest to, że często nie da się wydzielić całej odpowiedzialności do poszczególnych modeli - niejako końce (czy raczej początki) wszystkich nitkek staram się skupić w jednym miejscu. No ale jak to w życiu: coś za coś :-).
Jestem ciekaw jak wygląda to w innych projektach.
Pozdrawiam,
h.