자체 문서화 코드와 Javadocs?


18

최근에 나는 현재 다루고있는 코드베이스의 일부를 리팩토링하는 일을 해왔다. 나 자신을 더 잘 이해하고있을뿐 아니라 코드를 다루는 다른 사람들이 더 쉽게 이해할 수 있도록하기 위해서다.

나는 그 생각의 측면에 의지하는 경향이 자기 문서화 코드가 좋은 것입니다 . 나는 그것이 더 깨끗하다고 ​​생각하고 코드가 스스로를 말하면 글쎄 ... 훌륭 합니다.

반면에 우리는 javadocs와 같은 문서를 가지고 있습니다. 나는 이것도 좋아하지만 여기의 주석이 구식이 될 위험이 있습니다 (물론 일반적인 주석뿐만 아니라). 그러나 최신 버전이라면 복잡한 알고리즘을 이해하는 것이 매우 유용 할 수 있습니다.

이에 대한 모범 사례는 무엇입니까? 자체 문서화 코드와 javadoc 사이의 경계선은 어디에 있습니까?

답변:


24

자체 문서화 코드 (및 코드 내 주석)와 Javadoc 주석은 대상 독자가 매우 다릅니다.

코드 파일에 남아있는 코드와 주석은 개발자를위한 것입니다. 여기에서 그들의 우려를 해결하고자합니다. 코드가하는 일과 코드가 왜 그런지 이해하기 쉽게 만드십시오. 주석과 함께 적절한 변수 이름, 메소드, 클래스 등 (자체 문서화 코드)을 사용하면이를 달성 할 수 있습니다.

Javadoc 주석은 일반적으로 API 사용자를위한 것입니다. 이들은 또한 개발자이지만 시스템의 내부 구조, 시스템의 클래스, 메소드, 입력 및 출력에 대해서는 신경 쓰지 않습니다. 코드는 블랙 박스 안에 들어 있습니다. 이 주석은 특정 작업을 수행하는 방법, 예상되는 작업 결과, 예외 발생시기 및 입력 값의 의미를 설명하는 데 사용해야합니다. Javadoc에서 생성 한 문서 세트가 제공되므로 코드를 보지 않고도 인터페이스 사용 방법을 완전히 이해할 수 있어야합니다.


+1, 그것은 좋은 전화입니다. 나는 이것에 대한 나의 주요 그립은 그것을 두 개의 다른 대상 청중으로 보지 않지만 당신이 옳다는 것입니다.
Andreas Johansson

1
@Andiaz-서비스 API와 같은 시스템의 외부 가장자리와 내부 클래스를 구별하는 것이 유용하다는 것을 알았습니다. 나는 종종 모든 공용 메소드를 javadoc하는 것이 관례 인 프로젝트에서 작업하지만 클래스와 시스템을 어떻게 사용해야하는지에 대한 표시를 제공하기 위해 외부 클래스에 대해 더 많은주의를 기울입니다. 내부 클래스에서 독자는 더 많은 도메인 지식을 가지고 있으며 javadoc을 최소화하여 메소드 이름이 더 많이 말할 수 있다고 가정합니다.
Steve Jackson

3
@SteveJackson 그러나 IDE (적어도 Eclipse 및 NetBeans)가 코드 완성 툴팁에 Javadoc 주석을 표시하기 때문에 더 많은 Javadocs (개인 멤버조차도)를 사용하고 있음을 동의합니다. 물론 공용 인터페이스보다 깨끗하지 않고 다른 개발자에게 팁 / 노트를 제공합니다.
Thomas Owens

24

코드는 어떻게 말한다 . 댓글은 말할 이유 , 그리고 심지어 왜 안 .

미래의 독자와 코드 관리자에게 모두 제공하는 것이 귀하의 임무입니다. 코드에는 가능하고 나머지는 주석에 넣으십시오.

캡처하기 가장 어려운 것은 디자인 결정이므로 이러한 사항도 기억하십시오.


2
+1 : 배타적 의미에서 "또는"이 아닙니다. 둘 다 포괄적 인 의미입니다.
S.Lott

나는 이것에 분명히 동의한다. 특히 javadoc과 관련하여 고려해야 할 다른 것이 있습니까? 마찬가지로, 메소드가 무엇을 설명하는 것이 API와 같이 유용 할 수 있다고 상상할 수 있습니다.
Andreas Johansson

Javadoc은 대부분의 IDE에서 쉽게 액세스 할 수 있습니다. 추가 정보를 쉽게 탐색 할 수 있습니다.

+1 : 내가 본 최고의 의견에는 사용 된 알고리즘이 심도있게 논의 된 논문에 대한 언급이 포함되어 있습니다. 그것은 변수 / 메소드 이름으로 자체 문서화 될 수있는 것이 아니며 알고리즘이 인터페이스가 아닌 구현의 일부이므로 반드시 문서 주석에 속할 필요는 없습니다 .
Donal Fellows

4

Javadocs를 사용해도 큰 차이는 없습니다. 생성 된 문서에는 주석의 텍스트와 함께 함수 이름이 포함되므로 주석에서 함수 이름 자체에서 분명한 내용을 반복해야하는 이유는 전혀 없습니다.

반면에, 구현이 무엇인지 이해하기 위해 먼저 구현을 살펴 봐야하는 기능이있는 경우 (따라서이 정보를 Javadocs에 제공하지 않음) 코드는 자체 문서화되지 않습니다. 구현이 얼마나 명확한 지.


3
+1 내가 가장 좋아하는 것은 회사 코드 표준에 문서화 된 방법이 필요하지만 모든 사람이 코드에서 이미 말한 것을 반복하는 생성기를 사용하는 것입니다. 지루하고 쓸모없는.
Kryptic

1

javadocs의 경우 모든 문서와 동일하다고 생각합니다. 주된 규칙은 다음과 같습니다.

청중을 따르십시오

많은 사람들이 당신의 javadoc을 읽을? 그렇다면 올바른 노력을 기울이는 것이 좋습니다.

독자들은 javadoc을 공부하기 위해 코드 읽기건너 뛰는 경향이 있습니까? 그렇다면 글쓰기에 노력을 기울이는 것이 두 배의 의미가 있습니다.

  • 이것은 JDK 문서 의 경우와 정확히 같습니다 . Sun / Oracle은이 작업에 많은 노력을 기울였으며 API 문서에서 커뮤니티가 많이 사용하는 것에 대해 큰 투자금을 지불 한 것으로 보입니다.

자, 당신의 경우입니까? 그렇지 않다면, javadocs에 투자 한 노력이 정당한지 두 번 생각하십시오.

위에서 지적했듯이 청중의 말을 들어 길을 찾으십시오.

  • 문서가 충분하지 않다는 불만이 제기되면이를 개선하는 데 투자하십시오.
     
    반면에 개발자가 쓸모없는 타이핑에 시간을 낭비하도록 강요하는 두뇌 교착 상태 규칙에 대해 개발자가 듣게되는 경우 javadocs 노력이 서브 프라임 모기지에 투자하는 것과 같습니다 . 대신 더 나은 투자를 생각하십시오.

0

Javadoc 주석이 오래 될 수 있다는 우려에 대해 언급하고 싶습니다. @JonathanMerlet은 Javadoc이 안정적이어야한다고 말하고 있지만, 동료 검토 중에 Javadoc과 주석 및 코드를 검토하여 도움을 줄 수도 있습니다. 주석이 코드가 수행하는 작업과 일치합니까? 그렇지 않은 경우, 이는 올바르지 않으며 개발자가 수정하도록 주장하십시오. 다른 개발자들도 그렇게하도록 격려하십시오. 이를 통해 외부 문서 (Javadoc 주석)를 최신 상태로 유지할뿐만 아니라 일반 코드 주석도 유지할 수 있습니다. 이를 통해 리팩토링을 수행 한 개발자는 코드를보다 빠르고 쉽게 이해할 수 있으며 향후 유지 관리가 훨씬 간단 해집니다.


-1

javadocs는 안정적으로 유지 해야하는 부분 (API)에 적합하므로 주석이 만료 될 위험이 최소화되는 반면 자체 문서화 코드는 자주 변경 (구현)되는 대상에 적합합니다. 물론 API는 프로젝트 과정에서 변경 될 수 있지만 선언 바로 앞에 헤더를 두어 동기화를 유지하는 것은 그리 어렵지 않습니다 (여러 줄의 코드를 설명하는 여러 줄의 주석과 비교)

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