Obecnie używam dwóch systemów do pisania dokumentacji kodu (używam C ++):
- Dokumentacja o metodach i członkach klasy jest dodawana obok kodu, w formacie Doxygen. Na serwerze Doxygen jest uruchamiany na źródłach, dzięki czemu dane wyjściowe można zobaczyć w przeglądarce internetowej
- Strony przeglądowe (opisujące zestaw klas, strukturę aplikacji, przykładowy kod, ...) są dodawane do Wiki
Osobiście uważam, że takie podejście jest łatwe, ponieważ dokumentacja członków i klas jest bardzo zbliżona do kodu, podczas gdy strony przeglądowe są naprawdę łatwe do edycji na Wiki (a także łatwe dodawanie obrazów, tabel, ...). Przeglądarka internetowa pozwala zobaczyć obie dokumentacje.
Mój współpracownik sugeruje teraz, aby umieścić wszystko w Doxygen, ponieważ możemy następnie utworzyć jeden duży plik pomocy ze wszystkim w nim (używając albo HTML WorkShop Microsoftu, albo Qt Assistant). Obawiam się, że edytowanie dokumentacji w stylu Doxygen jest znacznie trudniejsze (w porównaniu z Wiki), szczególnie gdy chcesz dodać tabele, obrazy, ... (lub czy istnieje narzędzie do podglądu Doxygen, które nie wymaga generowania kod, zanim zobaczysz wynik?)
Czego używają duże projekty open-source (lub zamknięte) do pisania dokumentacji? Czy dzielą to również na styl Doxygen i Wiki? Czy używają innego systemu?
Jaki jest najbardziej odpowiedni sposób na ujawnienie dokumentacji? Za pośrednictwem serwera / przeglądarki internetowej lub dużego (kilka 100 MB) pliku pomocy?
Jakie podejście przyjmujecie podczas pisania dokumentacji kodu?
Odpowiedzi:
Posiadanie całej dokumentacji w jednym systemie zamiast dwóch może być prawdziwą zaletą. Funkcje takie jak tworzenie kopii zapasowych i przywracanie, wersjonowanie, globalne wyszukiwanie, globalne wyszukiwanie i zamiana, łączenie oraz, jak napisałeś, umieszczenie wszystkich dokumentów w jednym dokumencie końcowym, zazwyczaj będzie działać z mniejszym „tarciem”, gdy nie musisz utrzymywać dwóch różnych systemy z nakładającymi się możliwościami.
Z drugiej strony musisz zastanowić się, czy te zalety przewyższają łatwość korzystania z Wiki. Krąg edycji / generowania / udoskonalania edycji / generowania ponownie może być szybszy z twoją Wiki. Wydaje mi się, że można uzyskać ten cykl dość szybko dzięki doxygen, zachowując strony przeglądowe jako osobny podprojekt doxygen. Możesz skorzystać z zewnętrznych możliwości łączenia doxygen, co oczywiście nie zastępuje „szybkiego podglądu”, ale krok w tym kierunku. Do tej pory nie zrobiłem tego sam, ale sądzę, że musisz sam to wypróbować, jeśli chcesz wiedzieć, czy to działa w twoim przypadku.
Odnośnie innych projektów: Myślę, że narzędzie takie jak doxygen służy przede wszystkim do dokumentacji bibliotek. Jeśli nie jesteś zewnętrznym dostawcą bibliotek i wszyscy korzystający z twoich bibliotek mają pełny dostęp do kodu źródłowego, to potrzeba takiego narzędzia jak doxygen jest wątpliwa. Na przykład w naszym zespole nie mamy prawie żadnych zewnętrznych dokumentów poza kodem, z wyjątkiem dokumentów użytkowników końcowych i dokumentów naszych modeli baz danych. Naszymi podstawowymi narzędziami do tego rodzaju dokumentacji są docbook i fop , co daje nam satysfakcjonujące wyniki.
źródło
Najpierw użyj dokumentacji kodu. Dodaj Wiki i inne metody, jeśli to możliwe
Wiem, to będzie trudne do utrzymania.
Praktyczna odpowiedź:
W praktyce pierwszą rzeczą, którą robią programiści, jest sprawdzenie kodu.
Jako programista lubię mieć zewnętrzną dokumentację, taką jak Wiki, podręczniki. Ale pierwszą rzeczą, którą robię, jest przejrzenie kodu (czasem od innych programistów, czasem moich).
Jako programista, który pracował w kilku projektach i klientach, robię, co tylko możliwe, aby dodać zewnętrzną dokumentację, ale często mam dużo pracy i nie byłem w stanie obsługiwać wiki.
Czasami kierownicy projektów i inni szefowie nie dbają o dokumentację, a czasem inni programiści nie.
A najlepsze, co mogę zrobić, to dodać kilka komentarzy do kodu.
Powodzenia
źródło
Niektóre używają innych systemów - na przykład Sphinx Pythona , mają one system doc all-in-one, który buduje wszystko (działa również w C / C ++)
Zawsze myślę, że dokumentacja jest oddzielna od kodu, doxygen jest świetny, ale służy do przeglądu interfejsu API, a nie do „dokumentacji”. Do tego wiki jest świetna, ale wolę używać ASCIIDOC i przechowywać wyniki tego w kontroli źródła wraz z kodem, głównie dlatego, że mogę generować z niego pliki PDF, aby przekazać je innym osobom (np. Testerom, klientom itp.)
źródło
Doxygen umożliwia tworzenie plików PDF, HTML, stron wiki, prawie wszystkiego, co tylko możesz wymyślić.
Osobiście wolę mieć Doxygen i wiki oraz skrypt lub coś do sprawdzenia, kiedy się rozejdą.
źródło
Od wersji 1.8.0 doxygen obsługuje Markdown , co powinno ułatwić pisanie stron statycznych podobnie jak w systemie Wiki.
źródło
Grupa docelowa
Myślę, że odpowiadając na to pytanie, naprawdę musisz zapytać, kto powinien przeczytać tę dokumentację. Deweloper ma rażąco inne potrzeby niż użytkownik, a nawet analityk biznesowy.
Konserwacja
To, gdzie umieścić źródło tej dokumentacji, będzie zależeć od odbiorców i tego, kto pisze dla odbiorców.
Tam, gdzie to możliwe, upewnij się, że przykłady kodu lub przypadki użycia mogą być wykonane. Automatyzuj ich wykonywanie i wewnętrznie oznaczaj awarie. Możliwe, że te strony są słabej lub złej dokumentacji.
Dodatkowo, niezależnie od narzędzi, w których zdecydujesz się napisać dokumentację, potrzebujesz niezawodnych środków do powiązania określonej wersji dokumentacji z określoną wersją kodu. Jest to nadal korzystne nawet w szczęśliwych chmurach dzięki jednemu wiecznie zielonemu wdrożeniu.
Dokumentacja integrująca
Integracja może być potrzebna do sporządzenia dokumentacji, ale należy pamiętać, że tylko użytkownik oczekuje, że jedno miejsce uzyska dostęp do całej potrzebnej dokumentacji.
Analityk biznesowy jest bardzo zadowolony ze specyfikacji API, specyfikacji projektów i scenariuszy użycia, które można znaleźć w osobnych dokumentach lub osobnych sekcjach witryny.
Deweloper woli wszystko, co widać ze źródła, ale bardzo cieszy się z posiadania kilku dokumentów projektowych wysokiego poziomu i szczegółowych dokumentów specyfikacji protokołu poza kodem, choć najlepiej w ramach tej samej kasy.
Twój przypadek
Szczerze mówiąc, dokumentacja na twojej wiki prawdopodobnie nie jest tego samego rodzaju dokumentacją w twojej bazie kodu. Scalenie też może nie mieć sensu.
Z drugiej strony integrację tych dwóch można uzyskać na kilka prostych sposobów.
Na koniec dowiedz się, który system dokumentacji ma niskie koszty utrzymania, i pomaga w dostarczaniu produktu wysokiej jakości, co widać na widowni programistów, analityków biznesowych i użytkowników. Wszystko, co przeszkadza którejkolwiek z tych grup, koniecznie obniży jakość produktów.
źródło
Jeśli używasz ASCII, powinieneś przechowywać swoją ukrytą dokumentację w wysokiej części kodu źródłowego! Wtedy tylko najbardziej sprytni (czytaj: zasłużyli) użytkownicy mają możliwość korzystania z twoich dokumentów.
źródło
Prawdziwą zaletą może być posiadanie dokumentacji w dobrze zdefiniowanym, łatwo eksportowalnym, przenośnym formacie. Jeśli sfinks umrze (mało prawdopodobne), po prostu przekonwertuję na inny system, co, jak sądzę, byłoby zadaniem skryptowalnym. Przenoszenie danych poza wiki (prawdopodobnie przechowywane w bazie danych w zastrzeżonym formacie może być uciążliwe).
źródło