Aparece em não apenas um idioma que os comentários não podem ser aninhados. Você tem uma boa solução para este problema? Uma solução alternativa em C / C ++ e Java é usar apenas o comentário de linha única, mas torna-se impossível comentar um bloco maior. Estou enfrentando algo assim:
</li><!--
<li><!-- Save -->
Então, eu devo passar manualmente e editar os comentários. Você pode aconselhar como devemos lidar com isso, em vários idiomas? Não tenho certeza, mas talvez o python tenha uma solução para isso com a '''
maneira que possa incluir um #
comentário no python? `
'''
e"""
são strings . Acontece que o intérprete os avaliará durante a compilação (para o bytecode) e reconhecerá os literais da string como no-ops (portanto, eles não diminuem o tempo de execução / carregamento do bytecode). Docstrings, isto é, literais de string logo após umdef
mas antes do corpo, não são removidos, pois o intérprete assume que eles fornecem documentação para a função.#if 0
<code>#endif
. Portanto, isso não é realmente um problema. Usar comentários para fazer isso é a ferramenta errada.Respostas:
A melhor solução é, obviamente, não apenas aninhar seus comentários. Comentários aninhados geralmente são um sinal de que você está usando comentários incorretos. O exemplo mais comum é o código comentado que contém comentários em si, e a correção é remover o código em vez de comentá-lo.
Dito isto, muitas linguagens de programação têm mais de um tipo de sintaxe de comentário, e você pode usar esse fato para aninhar pelo menos um nível de profundidade. Por exemplo, em Java:
Além disso, em muitos idiomas, pelo menos um tipo de comentário pode ser aninhado; nos idiomas do tipo C, os comentários de linha dentro dos comentários de linha são ignorados:
A maioria dos IDEs suporta comentar blocos inteiros de código com comentários de linha em uma ação e eles lidam com esse tipo de estilo de comentário corretamente. O mesmo exemplo em Python:
Frequentemente, os padrões de codificação para um projeto específico têm regras sobre qual estilo de comentário usar quando; uma convenção comum é usar comentários em bloco (
/* */
) para documentação de métodos e classes, e comentários em linha (//
) para observações dentro dos corpos dos métodos e, por exemplo:Com esse estilo, é improvável que você precise aninhar
/* */
comentários (se precisar desativar temporariamente métodos ou classes inteiros, renomeá-los funcionará da mesma maneira, se não for melhor); e//
comentários são aninhados, pelo menos com uma pequena ajuda do seu IDE.Por fim, para desativar o código, você tem outras opções em várias linguagens de programação; por exemplo, em C, você pode aproveitar o pré-processador:
Em idiomas dinâmicos, geralmente você pode usar apenas
if
declarações regulares :No entanto, ao contrário do exemplo do CPP, essa estratégia exige que o arquivo de origem como um todo seja sintaticamente válido, portanto, não é de longe tão flexível.
E, finalmente, existem pelo menos alguns idiomas que permitem comentários aninhados. Caso você esteja interessado, a wikipedia possui um bom gráfico de comparação .
fonte
// And now for something completely different...
C e C ++ têm comentários de bloco aninhados:
Muitos editores de destaque entendem isso como um comentário e muitos outros pelo menos o destacam como qualquer outro código condicionalmente desabilitado.
Em muitos outros idiomas, você precisa contar com o suporte do editor. Para idiomas que possuem apenas comentários baseados em linhas (perl, python, ruby, shell ...), é bastante simples acrescentar o caractere de comentário a todas as linhas em um intervalo, para que a maioria dos editores possa fazer isso. Você ainda pode dizer o que eram comentários antes de comentar todo o bloco, porque o caractere do comentário é dobrado - fazê-lo simplesmente é uma vantagem aqui.
XML e SGML é provavelmente a maior dor, sua definição de comentário é simplesmente estúpida. Os comentários teriam sido triviais para aninhar, mas não apenas não são, é completamente proibido ter
--
comentários internos. Infelizmente, não sei quais editores têm um bom suporte para comentar em SGML / XML.fonte
#if _
que funciona bem e fica acinzentado no meu VS com Re #. Boa dica!Embora não seja uma solução geral, e certamente não seja ideal, uma maneira de resolver esse problema específico é usar a linguagem de processamento de modelos do lado do servidor para bloquear comentários para elementos de comentários de código aninhados. Isso deixa o conteúdo essencialmente intacto, mas impede o envio ao navegador do cliente.
Isso não ajuda muito se o arquivo for de conteúdo puro e puro que não requer outro processamento no servidor. Nesse caso e no caso mais geral de comentários aninhados, pergunte por que você deseja fazer isso. Na maioria dos casos, pode-se achar que a melhor maneira de lidar com isso é não lidar com tudo. Em outras palavras, se você deseja eliminar uma seção, elimine-a e deixe que o controle de versão lembre-se das diferenças se essa seção como um artefato precisar ressuscitar.
fonte
No caso de HTML / XML, você pode usar uma instrução de processamento inexistente: veja minha resposta em SO
fonte
O Swift suporta comentários aninhados para que "apareça não apenas em um idioma em que os comentários não possam ser aninhados" não seja mais uma afirmação verdadeira. Se você está insatisfeito com a falta de suporte para comentários aninhados em sua linguagem de programação, sugiro que tente o Swift.
Linguagem de Programação Rápida: O Básico
fonte
A linguagem de programação D aninhou comentários incorporados em:
Em outras palavras,
/+
e+/
comentários ninho.fonte