코드 주석에 제목을 작성합니까? [닫은]


17

나는 내가 쓴 오래된 코드 (대학에서 첫해)를 탐색하고 있었고 코드의 다양한 부분보다 먼저 주석 제목을 쓰는 것을 보았습니다. 같은 것 (이것은 독점 게임에서 온 것입니다) :

/*Board initialization*/
...code...

/*Player initialization*/
...code...

/*Game logic starts here*/
/*Displaying current situation*/
...code...

/*Executing move*/
...code...

/*Handle special event*/
...code...

/*Commit changes, switch to next player*/
...code...

코드가 정말 명확하면 중복 될 수 있으며 불필요하게 불필요하지만 파일을 스캔 한 결과 실제 코드를 거의 보지 않아도 무슨 일이 일어나고 있는지 알고있는 것처럼 느껴졌습니다. 나는 이것이 특정 상황에 맞는 것으로 분명히 볼 수 있으므로, 당신은 이것을 궁금합니다. 좋은 생각이라고 생각하십니까? 아니면 너무 많은가?

답변:


24

이것은 코드 냄새입니다. 이것이 무엇이고 그렇지 않은지 말해 줍니다.

이것이 필요한 경우 코드를 작은 기능으로 분할하십시오.


4
기능을 갖는 기능을 갖는 데는 아무런 의미가 없습니다.
Paul Nathan

30
맞습니다 : 만약 코드가와 같은 주석을 가질 가치가 있다면 /*Board initialization*/, 아마도라는 함수에 있어야합니다 InitializeBoard. 코드 구조가 명확하면 주석이 필요하지 않습니다.
팀 로빈슨

3
"무엇"을 아는 것이 좋으며 종종 코드를 볼 때 명확하지 않습니다. 이러한 의견은 전반적인 의도를 명확하게합니다.
DarenW

4
@DarenW-기능 / 프로 시저 / 방법도 마찬가지입니다. 그리고 나중에이 추가 로 더 쉽게 코드, 모듈화의 장점 이해를 .
Stephen C

3
이것의 또 다른 이점은 다음과 같은 기능 InitializeBoard이나 InitializePlayer코멘트하지 않습니다 반면 기능 대부분의 IDE의 / 모듈 / 클래스 브라우저 목록을 표시됩니다. 더 쉬운 탐색.
Steve Fallows

13

나는 항상 그렇게한다. 둘 다 코드가 무엇을하고 있는지를 표시하고, 더 중요한 것은 아마도 코드를 쉽게 스캔하고 찾을 수 있도록하는 것입니다. 때로는 주석에 관련된 프로세스를 작성하고 주석에 따라 코드를 '채울 수 있습니다'.


7
+1-선명도가 좋습니다. 이것이 코드 냄새라는 승인 된 답변에 동의하지 않습니다. 명확성을 더한다면-하십시오.
quick_now

2
OAOO를 위반하면 수행하지 마십시오. 중복되며 문서화 된 코드와 동기화되지 않는 경향이 있습니다. 코드를 함수에 넣고 함수 이름을 지정하십시오. 최신 IDE를 사용하면 기능 이름을 쉽게 변경하고 모든 참조를 업데이트 할 수 있습니다. 그렇게하면 모든 인스턴스가 최신 상태로 유지됩니다.
Scott Whitlock

3
나에게서 +1 큰 코드 파일에서는 논리 섹션을 구분하는 공백 이상의 것을 원합니다. 예, 함수가 loooooong 인 경우 분할해야한다고 생각하지만 부분이 주석으로 분리되어 있으면 훨씬 쉽게 읽을 수 있습니다.
Anthony

6

나는 왜 많은 사람들이 실제로 그 이유를 설명하지 못하고 연습을 싫어하는지 흥미 롭습니다. 그와 같은 의견이 눈살을 찌푸리는 이유는 당신이 단일 책임 원칙을 위반 한 표시이기 때문입니다. 특정 이름은 일반적으로 OO 컨텍스트에서만 사용되지만 일반적인 개념은 응집력이라고도하며 다른 패러다임에도 적용됩니다. 학교는 보통 학위 프로그램이 끝날 때까지 이런 종류의 디자인 원칙을 가르치지 않습니다. 실제로 일부 교사는 모든 것을 하나의 파일로 작성하여 채점하기가 더 쉬워 지도록 위반을 명령합니다. 따라서 신입생 무지는 변명 할 수 없으며 상황에 따라 "무언가"가 잘못되고 의견으로 명확하게 설명하려고 시도한 사실은 칭찬받을 만하지 만 일반적으로 의견으로 논문을 작성하는 것보다 불명확 한 디자인을 수정하는 것이 좋습니다.


4

코드를 더 명확하게 만들거나하지 않는 방법으로 이러한 것을 봅니다. 당신은 각 부분이 무엇인지 파일의 방법을 기반으로 말할 수 있다면 당신은 그러나 경우 필요가 없다 그 때 유용 할 수 있습니다 여러 섹션을 가지고는. 코드 파일이 너무 커지면 해당 주석의 필요성을 줄일 수있는 분류해야합니다.

나는 팀 내에서 표준을 생각해 내기 위해 적어도 같은 방식으로 코딩하고 주석을 달아 코드를 쉽게 볼 수 있다고 말합니다.


3

나는 종종 나 자신에게 의도를 전달하거나 본질적으로 "데이터 정리가 여기서 시작됩니다"와 같은 편리한 책갈피를 작성하기 때문에이 작업을 수행합니다. 일반적으로 그 제목 아래에 내가하고있는 일과 그 이유에 대한 간단한 내용이 있습니다.

나는 중복성을 좋아한다. 어떤 이유로 든 랩 노트를 잃어 버리거나 몇 년 전에 작성한 코드를 다시 방문해야하는 경우, 내가하고있는 작업과 수행 한 이유를 함께 모으는 것을 싫어합니다. 해당 논리 중 적어도 일부가 코드에 있으면 최소한 다시 작업 할 수있을만큼 충분히 문서화되어 있습니다.

나는 그것에 대한 내 성향의 일부가 상당히 많은 양의 프로그래밍이 본질적으로 통계적이므로 다소 반복적이라고 생각합니다. 검색 할 유용한 이름의 함수가있는 코드가 몇 개있을 수 있지만, 일반적인 선형 모델 함수와 비슷한 비슷한 수십 가지 용도가있을 수 있습니다. "선택 A와 선택 B 또는 C에 대한 결과가 얼마나 민감한 지"코드 중 어느 것이 다른 코드인지 찾아 보는 것이 유용합니다. 그것은 종종 제목에 의해 속도가 빨라집니다.


사업 목적 / 높은 수준의 목적을 언급하는 의견은 매우 가치가 있습니다. 그들은 확인 및 지원 이해를 가능하게합니다. 단위 테스트도 중복이라고 주장 할 수 있습니다. 코드를 문서화하고 이해하는 것이 테스트하는 것만 큼 중요하다고 제안합니다.
Thomas W

2

수십 가지 기능을 가진 거대한 소스 파일이 있고 그 덩어리를 느슨하게 구성 할 수있는 상황에서 유용하다고 생각합니다. 그러나 작고 집중된 소스 파일보다 낫다는 말은 아닙니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.