Nas linguagens que distinguem entre um arquivo "fonte" e "cabeçalho" (principalmente C e C ++), é melhor documentar funções no arquivo de cabeçalho:
(roubado do CCAN )
/**
* time_now - return the current time
*
* Example:
* printf("Now is %lu seconds since epoch\n", (long)time_now().tv_sec);
*/
struct timeval time_now(void);
ou no arquivo de origem?
(roubado do PostgreSQL)
/*
* Convert a UTF-8 character to a Unicode code point.
* This is a one-character version of pg_utf2wchar_with_len.
*
* No error checks here, c must point to a long-enough string.
*/
pg_wchar
utf8_to_unicode(const unsigned char *c)
{
...
Observe que algumas coisas são definidas apenas no cabeçalho, como estruturas, macros e static inline
funções. Estou falando apenas de coisas que são declaradas em um arquivo de cabeçalho e definidas em um arquivo de origem.
Aqui estão alguns argumentos em que consigo pensar. Estou inclinado a documentar no arquivo de origem, então meus argumentos "Pro-header" podem ser um pouco fracos.
Cabeçalho profissional:
- O usuário não precisa do código fonte para ver a documentação.
- A fonte pode ser inconveniente ou até impossível de adquirir.
- Isso mantém a interface e a implementação ainda mais separadas.
Pro-fonte:
- Isso torna o cabeçalho muito mais curto, oferecendo ao leitor uma visão panorâmica do módulo como um todo.
- Ele associa a documentação de uma função à sua implementação, facilitando ver que uma função faz o que diz que faz.
Ao responder, tenha cuidado com argumentos baseados no que as ferramentas e os "IDEs modernos" podem fazer. Exemplos:
- Cabeçalho profissional: a dobragem de código pode ajudar a tornar os cabeçalhos comentados mais navegáveis ocultando os comentários.
- Pro-source: o recurso do cscope
Find this global definition
leva você ao arquivo de origem (onde está a definição ) e não ao arquivo de cabeçalho (onde está a declaração ).
Não estou dizendo que não faça tais argumentos, mas lembre-se de que nem todo mundo se sente à vontade com as ferramentas que você usa.