가장 좋은 해결책은 분명히 의견을 내포하지 않는 것입니다. 중첩 된 주석은 일반적으로 잘못된 주석을 사용하고 있다는 표시입니다. 가장 일반적인 예는 주석 자체를 포함하는 주석 처리 된 코드이며, 수정은 주석 처리하지 않고 코드를 제거하는 것입니다.
즉, 많은 프로그래밍 언어에는 둘 이상의 유형의 주석 구문이 있으며이 사실을 사용하여 하나 이상의 레벨을 중첩 할 수 있습니다. 예를 들어, Java에서 :
/* This is commented out!
Foo.bar.baz();
// And now for something completely different...
Quux.runWith(theMoney);
*/
또한 많은 언어에서 적어도 한 가지 유형의 주석은 친절합니다. C와 같은 언어에서는 행 주석 내부의 행 주석이 무시됩니다.
// some_commented_out(code);
// // This is a comment inside the comment!
// // Still inside the nested comment.
// some_more_code_in(outer_comment);
대부분의 IDE는 한 번의 작업으로 라인 주석으로 전체 코드 블록 주석 처리를 지원하며 이러한 종류의 주석 스타일을 올바르게 처리합니다. 파이썬에서 같은 예 :
# some_commented_out(code)
# # This is a comment inside the comment!
# # Still inside the nested comment.
# some_more_code_in(outer_comment)
종종 특정 프로젝트에 대한 코딩 표준에는 언제 어떤 주석 스타일을 사용해야하는지에 대한 규칙이 있습니다. 일반적인 규칙은 /* */
메소드 및 클래스 문서에 블록 주석 ( )을 사용하고 //
메소드 본문 내부에있는 주석에 인라인 주석 ( )을 사용하는 것입니다. 예 :
/**
* 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;
}
}
이러한 스타일을 사용하면 /* */
주석 을 중첩해야 할 가능성이 거의 없습니다 (전체 메소드 또는 클래스를 일시적으로 비활성화해야하는 경우 이름을 바꾸는 것이 더 좋지는 않더라도 훌륭하게 작동합니다). 및 //
코멘트 할 당신의 IDE의 도움으로 적어도 둥지.
마지막으로 코드를 비활성화하기 위해 많은 프로그래밍 언어의 다른 옵션이 있습니다. 예를 들어 C에서는 전처리기를 활용할 수 있습니다.
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
동적 언어에서는 보통 if
대신 일반 명령문을 사용할 수 있습니다 .
<?php
if (0) {
// This should never run...
some_stuff_that_should_never_run();
}
그러나 CPP 예제와 달리이 전략에서는 소스 파일 전체가 구문 상 유효해야하므로 유연하지 않습니다.
마지막으로 중첩 된 주석을 허용 하는 언어가 적어도 있습니다. 당신이 관심이 있다면 , wikipedia 좋은 비교 차트가 있습니다.