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:
/* This is commented out!
Foo.bar.baz();
// And now for something completely different...
Quux.runWith(theMoney);
*/
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:
// some_commented_out(code);
// // This is a comment inside the comment!
// // Still inside the nested comment.
// some_more_code_in(outer_comment);
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:
# some_commented_out(code)
# # This is a comment inside the comment!
# # Still inside the nested comment.
# some_more_code_in(outer_comment)
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:
/**
* Helper class to store Foo objects inside a bar.
*/
public class Foobar {
/**
* Stores a Foo in this Foobar's bar, unless the bar already contains
* an equivalent Foo.
* Returns the number of Foos added (always 0 or 1).
*/
public int storeFoo(Foo foo) {
// Don't add a foo we already have!
if (this.bar.contains(foo)) {
return 0;
}
// OK, we don't have this foo yet, so we'll add it.
this.bar.append(foo);
return 1;
}
}
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:
this_is(activated);
#if 0
this_is(!activated);
/* Comments inside this block don't really nest, they are simply removed
along with the rest of the block! */
#endif
Em idiomas dinâmicos, geralmente você pode usar apenas if
declarações regulares :
<?php
if (0) {
// This should never run...
some_stuff_that_should_never_run();
}
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 .