Aikido

Como adicionar comentários explicativos a funções para um código mais seguro e de fácil manutenção

Legibilidade

Regra 

Funções sem comentários explicativos.
Funções sem comentários são difíceis de 
entender para outros desenvolvedores.

Linguagens suportadas: 45+

Introdução

Funções sem comentários forçam os desenvolvedores a inferir a intenção apenas a partir dos detalhes de implementação. Isso retarda as revisões de código e torna a manutenção mais propensa a erros. Explicações ausentes também ocultam suposições sobre validação, expectativas de entrada ou restrições de segurança. Documentação clara reduz o uso indevido e ajuda as equipes a entender o comportamento do código mais rapidamente.

Por que isso importa

Implicações de segurança: Comentários ausentes ocultam suposições sobre validação, verificações de autorização e entradas confiáveis, tornando o uso indevido mais fácil e aumentando os riscos de segurança.

Impacto no desempenho: Funções não documentadas podem ser usadas incorretamente, causando operações caras repetidas, parsing desnecessário ou manipulação ineficiente de dados.

Manutenibilidade: Desenvolvedores gastam mais tempo lendo e fazendo engenharia reversa da lógica quando a intenção não está documentada, atrasando o refactoring e o onboarding.

Exemplos de código

❌ Não-conforme:

// No explanation of expected input or security assumptions
function normalizeUser(user) {
    if (!user || typeof user !== 'object') return null;

    return {
        id: String(user.id).trim(),
        email: user.email.toLowerCase(),
        roles: user.roles.filter(r => r !== 'guest')
    };
}

Por que está errado: A função processa campos relevantes para a segurança, mas não documenta premissas sobre fontes confiáveis, estrutura esperada ou restrições de entrada.

✅ Compatível:

/**
 * Normalize user data from external input.
 * Expects: `user` contains `id`, `email`, and `roles`.
 * Rejects invalid structures and filters unsafe role values.
 * Ensures normalized identifiers and lowercased email for consistency.
 */
function normalizeUser(user) {
    if (!user || typeof user !== 'object') return null;

    return {
        id: String(user.id).trim(),
        email: user.email.toLowerCase(),
        roles: user.roles.filter(r => r !== 'guest')
    };
}

Por que isso importa: O comentário documenta a intenção, as entradas esperadas e as restrições de segurança, tornando o uso previsível e prevenindo integrações inseguras.

Conclusão

Adicione comentários claros a qualquer função onde a intenção, suposições ou restrições não são óbvias pela assinatura. Documente o que a função espera, o que ela retorna e qualquer comportamento relevante para a segurança. Isso melhora a qualidade da revisão, reduz o uso indevido e garante um comportamento previsível em toda a base de código.

FAQs

Dúvidas?

Eu deveria comentar todas as funções JavaScript?

Não. Comente funções onde o comportamento não é óbvio, especialmente ao lidar com entrada externa, dados sensíveis ou transformações complexas.

O que um bom comentário de função deveria explicar?

Intenção, parâmetros esperados, valores de retorno, efeitos colaterais e quaisquer suposições sobre dados confiáveis ou validados.

Os comentários ajudam nas auditorias de segurança?

Sim. Comentários claros expõem suposições e restrições, facilitando o raciocínio sobre limites de validação e potencial uso indevido.

Comentários podem substituir uma boa nomeação?

Não. Use nomes descritivos e adicione comentários onde a nomenclatura por si só não consegue expressar a intenção ou as restrições subjacentes.

Os comentários impactam o desempenho em tempo de execução?

Não. Comentários são removidos durante a execução e apenas melhoram o entendimento do desenvolvedor e a segurança do código.

Fique seguro agora

Proteja seu código, Cloud e runtime em um único sistema centralizado.
Encontre e corrija vulnerabilidades rapidamente de forma automática.

Não é necessário cartão de crédito | Resultados da varredura em 32 segundos.