Esta pode ser uma pergunta estúpida, mas está na minha cabeça há um tempo e não consigo encontrar uma resposta decente em nenhum outro lugar.
Eu tenho um professor que diz que devemos listar explicitamente cada parâmetro com uma descrição, mesmo se houver apenas um. Isso leva a muita repetição:
double MyFunction(const int MyParam);
// Function: MyFunction
// Summary: Does stuff with MyParam.
// Input: int MyParam - The number to do stuff with.
// Output: MyParam with stuff done to it.
Ao escrever a documentação em código, você é detalhado?
Respostas:
Para iniciantes, concordo que a linha "Function:" no seu exemplo é completamente redundante. Também foi minha experiência que as pessoas ensinaram na escola a adicionar esse tipo de comentário e continuar adicionando esse tipo de comentário em seu código de produção.
Bons comentários não repetem o que está no código. Eles respondem à pergunta "Por quê?" em vez de "o quê?" ou como?" Eles cobrem as expectativas sobre as entradas, bem como como o código se comportará sob certas condições. Eles abordam por que o algoritmo X foi escolhido em vez do algoritmo Y. Em resumo, exatamente as coisas que não seriam óbvias para outra pessoa 1 ao ler o código.
1: Alguém mais familiarizado com o idioma em que o código está escrito. Não escreva comentários para ensinar, comente para complementar as informações.
fonte
Várias linguagens possuem recursos de geração de documentos API como Ruby, Java, C # e C ++ (por meio de uma ferramenta de linha de comando). Quando você pensa dessa maneira, torna a escrita dos documentos da API muito mais importante. Afinal, ele responde à pergunta "como eu faço ...?" Portanto, não farei nada repetitivo como
Function: MyFunction
quando o nome da função é claro para todo mundo ver. As ferramentas de geração de documentos da API são inteligentes o suficiente para fazer isso por mim. No entanto, os seguintes detalhes são úteis, particularmente em métodos / funções públicos:Elas podem se tornar ferramentas de referência úteis quando você está tentando depurar código. Muitos IDEs também usarão os documentos da API nas dicas de ferramentas à medida que você passa o mouse sobre o nome da função.
Se é um idioma sem esses recursos, os comentários ajudam, mas não tanto.
fonte
Returns the square root of X
também descreve qual é o valor de retorno.Returns the color for this ray
ouReturns the requested Message, or null if it can't be found
. Mas sim, o resumo é a base dos documentos da API.Se for um método público de API, sim, você deve fornecer documentação detalhada, especialmente sobre parâmetros e comportamento esperado. Muitas pessoas acham que isso pode ser relaxado para métodos / funções particulares, YMMV.
No geral, prefiro escrever código limpo (pequenos métodos / funções que fazem uma coisa e uma coisa bem) com nomes de variáveis sensíveis. Isso faz com que grande parte do seu código se autodocumente. No entanto, certamente sempre documento casos extremos, usos de simultaneidade e algoritmos complexos.
Em resumo, pense em si mesmo como um pouco pior para o desgaste às 3 da manhã, daqui a três meses. Você agradecerá seus documentos públicos impressionantes, em vez de descobrir o que significa parâmetro (sinalizador booleano) ...
fonte
float
para um número inteiro adicionando 0,5 e obtendo o piso do resultado fará com que o maiorfloat
abaixo de 0,5 seja arredondado erroneamente. Nesses casos, às vezes pode ser importante distinguir se uma função deve ser definida como arredondamento para o número inteiro mais próximo (ou o próximo número inteiro mais alto quando dois valores possíveis são equidistantes) ou como adicionar 0,5 (possivelmente com uma etapa de arredondamento intermediária) e tomando a palavra do resultado.É semelhante à maneira como a maioria das estruturas -Doc analisa a documentação em código (JavaDoc, PHPDoc etc.).
No Java, gerado automaticamente pelo IDE:
Este é o mesmo formato usado para gerar a documentação para os recursos de idioma interno - Exemplo: http://download.oracle.com/javase/6/docs/api/java/lang/String.html
Esse formato é bastante útil porque mostra claramente a qualquer usuário de terceiros como fazer interface com seu código. Se suas funções são métodos particulares usados apenas internamente, pode ser um pouco inútil - mas eu acho que seu professor está tentando fazer com que você pratique uma boa prática até que todos tenham experiência em fazer essa distinção.
O único bit que frequentemente acho redundante é a descrição do retorno - geralmente é quase idêntica à descrição do meu método.
fonte
Há dois propósitos para Comentários:
É claro que existem muitas maneiras diferentes de abordar isso, mas quanto mais completo e consistente você for, melhor. Os comentários eficazes levam tempo para aprender, assim como a programação eficaz. Lembre-se de que é difícil ver o ponto dos comentários na escola, pois nada em que você está trabalhando é grande o suficiente para realmente justificá-lo, mas eles estão apenas tentando apresentá-lo a você. E, geralmente, a maneira como você ensina a fazê-lo é o estilo de seu professor, e não de qualquer forma qualquer padrão. Desenvolva o que funciona para você. E lembre-se ... existe um comentário estúpido! :) Exemplo:
Realmente? Obrigado! ri muito
fonte
Eu gosto da documentação do site PHP, então uso algo semelhante nos meus comentários embutidos e na sintaxe do PHPDoc. Veja o exemplo abaixo.
E, como o @Larry Coleman disse, os comentários incorporados devem dizer por que você fez algum código.
fonte
Se estiver a serviço da geração do Doc, comentários detalhados (embora irritantes) provavelmente são uma coisa boa. Embora você precise definir como meta da equipe manter-se atualizado sobre os comentários e mantê-los atualizados.
Se for apenas o estilo de comentários, eu teria problemas com isso. Comentários excessivos podem prejudicar o código tanto quanto ajudar. Não consigo contar o número de vezes que encontrei comentários no código que estavam desatualizados e, como resultado, enganosos. Eu geralmente ignoro os comentários agora e me concentro na leitura do código e nos testes do código para entender o que ele faz e qual é a intenção.
Prefiro ter um código claro e não comentado, conciso . Faça-me alguns testes com asserções ou métodos descritivos e estou feliz e informado.
fonte