Gdzie umieścić bloki komentarzy doxygen dla wewnętrznej biblioteki-w plikach H lub CPP? [zamknięte]
Zdrowy rozsądek mówi, że bloki komentarzy Doxygen muszą być umieszczone w plikach nagłówkowych, gdzie znajdują się klasy, struktury, enums, funkcje, deklaracje. Zgadzam się, że jest to dobry argument dla bibliotek, które mają być dystrybuowane bez źródeł (tylko nagłówki i biblioteki z kodem obiektowym).
Ale...Myślałem o dokładnie odwrotnym podejściu, gdy rozwijam wewnętrzną bibliotekę firmy (lub jako projekt poboczny dla siebie), która będzie używana z pełną kod źródłowy. Proponuję umieścić duże bloki komentarzy w plikach implementacji (HPP, INL, CPP, itp.), aby nie zaśmiecać przestrzeni klas i funkcji zadeklarowanych w nagłówku.
Plusy:
- mniej bałaganu w plikach nagłówkowych, można dodać tylko kategoryzację funkcji.
- bloki komentarzy, które są podglądane, gdy na przykład jest używany Intellisense, nie kolidują - jest to wada, którą zaobserwowałem, gdy mam blok komentarzy dla funkcji w .Plik H i ma swoją definicję inline w tym samym .Plik H, ale dołączony od .Plik INL.
Wady:
- (oczywisty) bloki komentarzy Nie znajdują się w plikach nagłówkowych, w których znajdują się deklaracje.
Więc, co myślisz i ewentualnie sugerujesz?
8 answers
Umieść dokumentację tam, gdzie ludzie będą ją czytać i pisać, ponieważ używają i pracują nad kodem.
Komentarze klas idą przed klasami, komentarze metod przed metodami.
To najlepszy sposób, aby upewnić się, że wszystko jest utrzymane. Utrzymuje również pliki nagłówkowe relatywnie szczupłe i zapobiega problemowi dotykania osób aktualizujących dokumenty metody powodujące zabrudzenie nagłówków i uruchamianie przebudów. Wiem, że ludzie używają tego jako wymówki do pisania. dokumentacja później!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-01-14 23:18:26
Lubię korzystać z faktu, że nazwy mogą być udokumentowane w wielu miejscach.
W pliku nagłówkowym piszę Krótki opis metody i dokumentuję wszystkie jej parametry - są one mniej prawdopodobne, aby się zmieniły niż implementacja samej metody, a jeśli tak, to prototyp funkcji musi zostać zmieniony w każdym przypadku.
Umieszczam długoformatową dokumentację w plikach źródłowych obok rzeczywistej implementacji, więc szczegóły można zmienić jako metodę ewoluuje.
Na przykład:
Mymodule.h
/// @brief This method adds two integers.
/// @param a First integer to add.
/// @param b Second integer to add.
/// @return The sum of both parameters.
int add(int a, int b);
Mymodule.cpp
/// This method uses a little-known variant of integer addition known as
/// Sophocles' Scissors. It optimises the function's performance on many
/// platforms that we may or may not choose to target in the future.
/// @TODO make sure I implemented the algorithm correctly with some unit tests.
int add(int a, int b) {
return b + a;
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-27 05:48:02
Posiadanie komentarzy w nagłówku oznacza, że wszyscy użytkownicy klasy muszą zostać przekompilowani, jeśli komentarz zostanie zmieniony. W przypadku dużych projektów programiści będą mniej skłonni do aktualizowania komentarzy w nagłówkach, jeśli zaryzykują spędzenie następnych 20 minut na przebudowie wszystkiego.
I.. ponieważ powinieneś czytać dokument html, a nie przeglądać kod w celu uzyskania dokumentacji, nie jest dużym problemem, że bloki komentarzy są trudniejsze do zlokalizowania w plikach źródłowych.
nagłówki: Łatwiej czytać komentarze, ponieważ jest mniej innych "szumów" podczas przeglądania plików.
Źródło: Następnie masz rzeczywiste funkcje dostępne do czytania podczas przeglądania komentarzy.
Używamy tylko wszystkich globalnych funkcji komentowanych w nagłówkach i lokalnych funkcji komentowanych w source. Jeśli chcesz, możesz również dołączyć polecenie copydoc, aby wstawić dokumentację w wielu miejscach bez konieczności jej pisania kilka razy ( lepiej dla maintenance)
Możesz jednak również uzyskać wyniki skopiowane do innej dokumentacji pliku za pomocą prostego polecenia. Np.: -
Mój plik1.h
/**
* \brief Short about function
*
* More about function
*/
WORD my_fync1(BYTE*);
Mój plik1.c
/** \copydoc my_func1 */
WORD my_fync1(BYTE* data){/*code*/}
Teraz dostajesz tę samą dokumentację dla obu funkcji.
Daje to mniej szumu w plikach kodu, jednocześnie dostajesz dokumentację napisaną w jednym miejscu, prezentowaną w kilku miejscach na końcowym wyjściu.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-04 18:25:56
Zazwyczaj umieszczam w nim dokumentację interfejsu (\param, \ return).H plik i dokumentacja do wdrożenia (\details) w .c/.cpp/plik M. Doxygen grupuje wszystko w dokumentacji funkcji/metody.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-01-05 15:06:51
Umieszczam wszystko w pliku nagłówkowym.
Dokumentuję wszystko, ale ogólnie wyodrębniam publiczny interfejs.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-01-08 10:29:14
Używam QtCreator do programowania. Bardzo przydatna sztuczka polega na kliknięciu Ctrl na funkcji lub metodzie, aby uzyskać deklarację w pliku nagłówkowym.
Gdy metoda jest komentowana w pliku nagłówkowym, możesz szybko znaleźć informacje, których szukasz. Więc dla mnie komentarze powinny znajdować się w pliku nagłówkowym!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-25 14:06:34
W c++ czasami implementację można podzielić między nagłówek i .Moduły cpp. Tutaj wydaje się czystsze umieszczenie dokumentacji w pliku nagłówkowym, ponieważ jest to jedyne miejsce, w którym gwarantowane są wszystkie publiczne funkcje i metody.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-11-15 20:06:15