[Effective Java] 아이템 56. 공개된 API 요소에는 항상 문서화 주석을 작성하라

2022. 11. 21. 22:41· BE/Java
목차
  1. 아이템 56. 공개된 API 요소에는 항상 문서화 주석을 작성하라
반응형

EFFECTIVE JAVA(이펙티브 자바)

 

이 포스팅에서 작성하는 내용은 EFFECTIVE JAVA(이펙티브자바) 에서 발췌하였습니다.


아이템 56. 공개된 API 요소에는 항상 문서화 주석을 작성하라

좋은 API를 개발하기 위해서는 해당 API에 대한 문서도 잘 작성되어야 한다.

기본적으로 API 문서는 사람이 직접 작성하므로 코드가 변경되면 매번 같이 수정해줘야 하는데, 자바에서는 Javadoc이라는 유틸리티가 이 작업을 도와준다.

 

Javadoc

  • Javadoc은 프로그래머가 자바독 문서를 올바르게 작성했는 지 확인하는 기능을 제공한다.
  • 자바 7에서는 명렬줄에서 -Xdoclint 스위치를 켜주면 이 기능이 활성화되고, 자바 8부터는 기본으로 작동한다.
  • 소스코드 파일에서 문서화 주석이라는 특수한 형태로 기술된 설명을 추려 API 문서로 변환해준다.
  • API를 올바르게 문서화하려면 공개된 모든 클래스, 인터페이스, 메서드, 필드 선언에 문서화 주석을 달아야 한다.
  • 직렬화할 수 있는 클래스라면 직렬화 형태에 관해서도 적어야 한다.
  • 메서드용 문서화 주석에는 해당 메서드와 클라이언트 사이의 규약을 명료하게 기술해야 한다.
    • 상속용으로 설계된 클래스의 메서드가 아니라면 무엇을 하는지를 기술해야 한다. (즉, how가 아닌 what을 기술해야 한다.)
    • 문서화 주석에는 클라이언트가 해당 메서드를 호출하기 위한 전제조건을 모두 나열해야한다.
    • 또한 메서드가 성공적으로 수행된 후에 만족해야 하는 사후조건도 모두 나열해야 한다.
    • 일반적으로 전제조건은 @throws 태그로 비검사 예외를 선언하여 암시적으로 기술한다. 비검사 예외 하나가 전제조건 하나와 연결되는 것이다.
    • @param 태그를 이용해 그 조건에 영향받는 매개변수에 기술할수도 있다.
  • 전제조건과 사후조건 뿐만 아니라 부작용도 문서화해야 한다.
  • 부작용이란, 사후조건으로 명확히 나타나지는 않지만 시스템의 상태에 어떠한 변화를 가져오는 것을 뜻한다.
  • 문서화 주석에 HTML 태그를 쓰기도 한다. Javadoc 유틸리티는 문서화 주석을 HTML로 변환하기 때문이다.
  • 관례상, 인스턴스 메서드의 문서화 주석에 쓰인 “this”는 호출된 메서드가 자리하는 객체를 가리킨다.

 

Javadoc 주석 태그

  설명
@param                    매개 변수를 설명
모든 매개변수에 설명을 달아야 함
설명에 마침표를 붙이지 않는다.
@return 반환 타입이 void가 아니라면 무엇을 return 하는 지 기술
설명에 마침표를 붙이지 않는다.
@throws 발생할 가능성이 있는 검사든 비검사든 모든 예외를 기술
설명에 마침표를 붙이지 않는다.
{@code} 주석 내에 HTML 요소나 다른 Javadoc 태그를 무시함
주석에 여러 줄로 된 코드 예시를 넣으려면 {@code …코드들…}
{@literal} HTML 마크업이나 Javadoc 태그를 무시하게 해준다.
위의 {@code} 태그와 비슷하지만 코드 폰트로 렌더링하지 않는다.
@implSpec 해당 메서드와 하위 클래스 사이의 계약을 설명하여, 하위 클래스들이 그 메서드를 상속하거나 super 키워드를 이용해 호출할 때 그 메서드가 어떻게 동작하는지를 알려준다.
자바 11까지도 Javadoc 명령줄에서 -tag “implSpec:a:Implemtation Require ments:” 스위치를 켜주지 않으면 @imple 태그를 무시해버린다.
{@index} 클래스, 메서드, 필드 같은 API 요소의 색인은 자동으로 만들어지며, 원한다면 {@index} 태그를 사용해 API에서 중요한 용어를 추가로 색인화할 수 있다.
{@inheritDoc} 상위 타입의 문서화 주석 일부를 상속할 수 있다. 즉, 클래스는 자신이 구현한 인터페이스의 문서화 주석을 재사용할 수 있다는 것

 

 

주석 요령

  • 제네릭 타입이나 제네릭 메서드를 문서화할 때는 모든 타입 매개변수에 주석을 달아야 ㅇ한다.
  • 열거 타입을 문서화할 때에 상수들에도 주석을 달야아 한다.
  • 애너테이션 타입을 문서화할 때는 멤버들에도 모두 주석을 달아야 한다.
  • 패키지를 설명하는 문서화 주석은 package-info.java 파일에 작성한다.
  • 클래스 혹은 정적 메서드가 스레드 안전하든 그렇지 않든 스레드 안전 수준을 API 설명에 포함해야 한다.
반응형

'BE > Java' 카테고리의 다른 글

[Effective Java] 아이템 58. 전통적인 for 문보다는 for-each 문을 사용하라  (0) 2022.11.23
[Effective Java] 아이템 57. 지역변수의 범위를 최소화하라  (0) 2022.11.22
[Effective Java] 아이템 55. 옵셔널 반환은 신중히 하라  (0) 2022.11.18
[Effective Java] 아이템 54. null이 아닌, 빈 컬렉션이나 배열을 반환하라  (0) 2022.11.17
[Effective Java] 아이템 53. 가변인수는 신중히 사용하라  (0) 2022.11.16
  1. 아이템 56. 공개된 API 요소에는 항상 문서화 주석을 작성하라
'BE/Java' 카테고리의 다른 글
  • [Effective Java] 아이템 58. 전통적인 for 문보다는 for-each 문을 사용하라
  • [Effective Java] 아이템 57. 지역변수의 범위를 최소화하라
  • [Effective Java] 아이템 55. 옵셔널 반환은 신중히 하라
  • [Effective Java] 아이템 54. null이 아닌, 빈 컬렉션이나 배열을 반환하라
멍목
멍목
개발 관련 새롭게 알게 된 지식이나 좋은 정보들을 메모하는 공간입니다.
반응형
멍목
김멍목의 개발블로그
멍목
전체
오늘
어제
  • 분류 전체보기 (514)
    • BE (190)
      • Spring (21)
      • Java (141)
      • Kotlin (6)
      • JPA (22)
    • FE (33)
      • Javascript (16)
      • Typescript (0)
      • React (5)
      • Vue.js (9)
      • JSP & JSTL (3)
    • DB (32)
      • Oracle (22)
      • MongoDB (10)
    • Algorithm (195)
    • Linux (8)
    • Git (6)
    • etc (42)
    • ---------------------------.. (0)
    • 회계 (4)
      • 전산회계 2급 (4)
    • 잡동사니 (2)

블로그 메뉴

  • 홈
  • 관리

공지사항

인기 글

태그

  • MongoDB 기초부터 실무까지
  • 자기 개발
  • 전산회계 2급 준비
  • 더 자바 Java 8
  • MongoDB with Node.js
  • 이펙티브 자바
  • 이펙티브자바
  • 알고리즘 공부
  • 자기개발
  • 자기 공부
  • JPA
  • vue3 공부
  • JPA 공부
  • 코틀린
  • 자바 개발자를 위한 코틀린 입문
  • 코테공부
  • 자바공부
  • java 8
  • Oracle
  • MongoDB 공부
  • 자바 공부
  • 알고리즘공부
  • junit5
  • 프로젝트로 배우는 Vue.js 3
  • 코테 공부
  • Effective Java
  • 자바 테스팅 프레임워크
  • 자기공부
  • 더 자바 애플리케이션을 테스트하는 다양한 방법
  • Java to Kotlin

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.0
멍목
[Effective Java] 아이템 56. 공개된 API 요소에는 항상 문서화 주석을 작성하라
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.