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?

Author: Singulus, 2008-12-10

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!

 68
Author: Andy Dent,
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;
}
 58
Author: Daniel Buckmaster,
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.

 14
Author: ,
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-09 14:22:33

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.

 9
Author: eaanon01,
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.

 3
Author: mouviciel,
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.

 3
Author: graham.reeds,
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!

 2
Author: Sinclair,
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.

 0
Author: kelvin,
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