Pular para o conteúdo principal

Comentários e Documentação

Cada linguagem tem sua própria sintaxe para comentários e documentação. Aqui está como diferentes linguagens lidam com comentários de código e geração de documentação.

Comentários​

// Single-line comment

/* Multi-line
comment */

/**
* JSDoc documentation comment
* @param {string} name - The user's name
* @param {number} age - The user's age
* @returns {string} A greeting message
* @throws {Error} If name is empty
* @example
* greet("John", 30); // "Hello, John!"
*/
function greet(name, age) {
return "Hello, " + name + "!";
}

// TODO: Implement this feature
// FIXME: This has a bug
// NOTE: Important detail

Principais Conclusões​

  • Ferramentas de geração de documentação -- Cada ecossistema tem ferramentas padrão: JSDoc para JavaScript, PHPDoc para PHP, cargo doc para Rust, go doc para Go, Sphinx ou pydoc para Python, Doxygen para C/C++, Javadoc para Java, YARD para Ruby e swift-docc para Swift. Essas ferramentas analisam comentários de documentação e produzem HTML ou outros formatos. Por exemplo, cargo doc --open em Rust gera e abre a documentação da API; javadoc -d docs src/*.java faz o mesmo para Java. Ao iniciar um projeto, adote a ferramenta padrão do ecossistema cedo para que a documentação se mantenha sincronizada com o código.

  • Convenções de comentários de documentação -- Barra tripla (///) é usada em Rust, Zig, C# e Swift para documentação que precede funções ou tipos. JavaScript, PHP, Java e C/C++ usam blocos /** */ com tags como @param, @returns e @throws. C# também suporta tags XML como <summary>, <param> e <returns>. Python usa docstrings (strings entre aspas triplas) como formato principal de documentação. Escolha a convenção que corresponde às ferramentas da sua linguagem; misturar estilos em um projeto causa confusão.

  • Sintaxe e tags de comentários de documentação -- Tags comuns entre linguagens incluem descrições de parâmetros (@param name), valores de retorno (@returns ou @return), exceções (@throws) e exemplos (@example ou # Examples). Rust e Zig suportam Markdown dentro de comentários de documentação; C# usa XML. Para máxima clareza, documente parâmetros e valores de retorno para cada função pública e adicione um exemplo curto onde isso ajude. Documentação esparsa ou inconsistente prejudica a manutenibilidade.

  • Teste de exemplos de código -- O cargo test do Rust pode executar blocos de código em comentários de documentação, então os exemplos permanecem executáveis e corretos. O doctest do Python executa trechos com >>> em docstrings como testes. Java e Javadoc suportam blocos {@code} para exibição, mas não execução automática. Investir em exemplos testáveis (Rust, Python) reduz documentação desatualizada ou quebrada. Quando sua linguagem suportar, adicione exemplos executáveis e execute-os no CI.