아래의 진술 중 일부는 정당하지만 정당한 성격을 지니고 있지만 개인적으로 그렇게되어 있습니다.
댓글 유형
간단한 버전의 경우 ...에 대한 의견을 사용합니다.
- 데이터 구조의 필드를 설명하는 후행 주석 (그들과 별도로, 실제로 한 줄 주석을 사용하지는 않습니다)
- 블록 위의 예외적이거나 목적 지향적 인 여러 줄 주석
- 소스에서 생성 된 공개 사용자 및 / 또는 개발자 문서
자세한 내용과 (아마도 모호한) 이유는 아래를 읽으십시오.
후행 주석
언어에 따라 한 줄 주석 또는 여러 줄 주석을 사용합니다. 왜 의존 하는가? 표준화 문제 일뿐입니다. C 코드를 작성할 때 기본적으로 구식 ANSI C89 코드를 선호하므로 항상을 선호합니다 /* comments */
.
따라서 나는 이것을 C에서 가장 많이 사용하고 때로는 C와 같은 구문을 가진 언어의 경우 (코드베이스의 스타일에 따라 다름)
typedef struct STRUCT_NAME {
int fieldA; /* aligned trailing comment */
int fieldBWithLongerName; /* aligned trailing comment */
} TYPE_NAME;
이맥스는 훌륭하고 저와 함께 M-;
합니다.
언어가 한 줄 주석을 지원하고 C 기반이 아닌 경우, 한 줄 주석을 사용하는 것이 좋습니다. 그렇지 않으면, 나는 지금 습관을들이는 것을 두려워합니다. 간결하게 강제해야하기 때문에 반드시 나쁘지는 않습니다.
여러 줄 주석
한 줄짜리 주석을 사용하는 것이 더 시각적으로 매력적이라는 당신의 교훈에 동의하지 않습니다. 나는 이것을 사용한다 :
/*
* this is a multi-line comment, which needs to be used
* for explanations, and preferably be OUTSIDE the a
* function's or class' and provide information to developers
* that would not belong to a generated API documentation.
*/
또는 이것은 (그러나 개인 코드베이스를 제외하거나 대부분 저작권 표시를 제외하고는 더 이상 그렇지 않습니다. 이것은 저에게 역사적이며 교육적 배경에서 비롯됩니다. 불행히도 대부분의 IDE는 자동 형식을 사용할 때 문제를 일으 킵니다) :
/*
** this is another multi-line comment, which needs to be used
** for explanations, and preferably be OUTSIDE the a
** function's or class' and provide information to developers
** that would not belong to a generated API documentation.
*/
실제로 필요한 경우, 후행 위치에서 사용하는 것이 적절하다면 후행 주석에 대해 앞에서 언급 한 내용을 사용하여 인라인으로 주석을 달 것입니다. 예를 들어 매우 특별한 반환 사례에서 또는 switch
의 case
문 을 문서화하거나 (드물게 스위치를 자주 사용하지 않음) 또는 if ... else
제어 흐름 에서 분기를 문서화 할 때 . 이것이 이것 중 하나가 아닌 경우 일반적으로 함수 / 메소드 / 블록의 단계를 설명하는 스코프 외부의 주석 블록이 더 의미가 있습니다.
문서 주석을 지원하지 않는 언어로 코딩하는 경우를 제외하고는 매우 예외적으로 사용합니다 (아래 참조). 이 경우에 더 널리 퍼지게됩니다. 그러나 일반적인 경우에, 그것은 실제로 다른 개발자를위한 것이며 실제로 눈에 띄어 야하는 내부 의견 인 것을 문서화하기위한 것입니다. 예를 들어, "강제" catch
블록 과 같은 필수 빈 블록을 문서화하려면 다음을 수행하십시오.
try {
/* you'd have real code here, not this comment */
} catch (AwaitedException e) {
/*
* Nothing to do here. We default to a previously set value.
*/
}
그것은 이미 나에게 추악하지만 어떤 상황에서는 용납 할 것입니다.
설명서 주석
Javadoc & al.
필자는 일반적으로 메서드 및 클래스에서이 기능을 사용하여 특히 공용 API에 대한 기능을 소개하거나 변경하는 버전을 문서화하고 일부 예제 (명확한 입력 및 출력 사례, 특수 사례 포함)를 제공합니다. 어떤 경우에는 유닛 케이스가 이들을 문서화하는 것이 더 나을 수도 있지만, 어떤 DSL을 사용하든 유닛 테스트는 사람이 읽을 수있는 것은 아닙니다.
모든 문서 생성 프레임 워크가 후행 문서 주석을 지원하는 것은 아니며 이것에 대한 후행 주석을 선호하기 때문에 필드 / 속성을 문서화하는 데 약간의 버그가 있습니다. 예를 들어, Doxygen은 JavaDoc을 지원하지 않지만 모든 필드에 대해 최고 의견이 필요합니다. Java 라인은 대부분 어쨌든 길기 때문에 견딜 수 있습니다. 따라서 후행 주석은 내 공차 임계 값을 초과하여 라인을 확장하여 나에게 똑같이 영향을 미칩니다. Javadoc이 그것을 개선하는 것을 고려한다면, 나는 훨씬 더 행복 할 것입니다.
주석 처리 된 코드
한 가지 이유로 C와 같은 언어로 한 줄만 사용합니다 (엄격한 C로 컴파일하지 않는 한 C를 컴파일하는 경우 제외) : 코딩하는 동안 주석 처리합니다. 대부분의 IDE는 한 줄 주석 (들여 쓰기 또는 열 0에 정렬)을 전환 할 수 있으며 그 사용 사례에 적합합니다. 여러 줄 주석에 토글을 사용하거나 일부 IDE의 경우 중간 줄에서 선택하면 주석 / 주석 해제를 쉽게 전환하기가 어렵습니다.
그러나 SCM의 주석 처리 된 코드에 반대하기 때문에 커밋하기 전에 주석 처리 된 청크를 삭제하기 때문에 수명이 매우 짧습니다. (읽기 내 대답 에이 질문에 "편집 -로 라인의 의견과 SCM들에서" )
댓글 스타일
나는 보통 다음과 같이 쓰는 경향이 있습니다.
- API 주석 또는 생성 된 매뉴얼의 일부로 나중에 읽어야하므로 문서 주석에 올바른 문법 (문구 포함)이 포함 된 문장을 완성하십시오.
- 여러 줄 주석 블록의 문장 부호 / 대문자에 대한 형식이 잘 지정되어 있지만 여유가 있습니다.
- 구두점없는 후행 블록 (공간 때문에 일반적으로 주석은 짧은 주석이므로 괄호로 묶은 명령문과 유사 함)
Literate Programming 에 대한 참고 사항
Donald Knuth 가이 백서 에서 소개 한 Literate Programming에 관심이있을 수 있습니다 .
문해력있는 프로그래밍 패러다임 인 [...]은 컴퓨터에 의해 부과 된 방식과 순서로 프로그램을 작성하는 것으로부터 멀어짐을 나타내며 대신 프로그래머가 생각의 논리와 흐름에 의해 요구되는 순서대로 프로그램을 개발할 수 있도록합니다. 2 Literate 프로그램은 일반 인간의 언어로 논술의 텍스트처럼 중단없는 설명으로 작성됩니다 [...].
Literate 프로그래밍 도구는 문맹 소스 파일에서 두 가지 표현을 얻는 데 사용됩니다. 하나는 컴퓨터에 의한 추가 컴파일 또는 실행에 적합한 "얽힌"코드와 다른 하나는 형식화 된 문서로 보는 데 사용됩니다. 문맹 원.
참고 사항 및 예 : underscore.js JavaScript 프레임 워크는 내 주석 스타일을 준수 하지 않더라도 잘 문서화 된 코드베이스 와 잘 주석이 달린 주석 소스 의 좋은 예입니다. API 참조).
이것들은 개인적인 관습입니다. 그렇습니다, 나는 이상 할지도 모른다. 동료와 작업 할 때 팀의 코드 규칙을 따르고 준수 하거나 기본 설정을 급격히 공격하지 않고 멋지게 공동 작업하지 않는 한 괜찮습니다 . 그것은 당신의 스타일의 일부이며, 당신을 코더로 정의하는 코딩 스타일을 개발하는 것 (또는 당신이 관련있는 생각이나 조직의 추종자)과 일관성에 대한 그룹의 협약을 존중하는 것 사이의 미세한 선을 찾아야합니다 .
:3,7 Align //
3-7 행의 주석을 정렬하십시오.