개발 가이드 공통 (Common) 주석 작성 가이드
최종 수정:

주석 작성 가이드

Javadoc 및 인라인 주석 작성 규칙

주석 작성 가이드

기본 원칙

  • 주석은 WHY(왜) 위주로 작성한다. WHAT(무엇)은 코드가 설명해야 한다.
  • 당연한 내용을 설명하는 주석은 작성하지 않는다.
  • 코드가 명확하면 주석이 필요 없다.
  • 주석이 없어도 이해되는 코드가 좋은 코드다.

Javadoc (클래스/메서드)

/**
 * AI 기반 뉴스 다이제스트 생성 서비스.
 *
 * <p>Claude AI를 활용하여 수집된 뉴스 항목을 요약하고
 * 이메일로 발송한다. 배치 스케줄러에 의해 매일 실행된다.</p>
 */
@Service
@RequiredArgsConstructor
public class DigestOrchestrator {

    /**
     * 다이제스트 생성 전체 프로세스를 실행한다.
     *
     * <p>AI 처리 → DB 저장 → 이메일 발송 순서로 실행되며,
     * 실패 시 Slack 알람이 발송된다.</p>
     *
     * @throws IllegalStateException AI 처리 또는 메일 발송 실패 시
     */
    public void runDigest() { ... }
}

인라인 주석 (// )

// 좋은 예 — WHY 설명

// URL 기준 중복 수집 방지를 위해 SHA-256 해시 사용
String fingerprint = FingerprintUtils.sha256(newsUrl);

// 외부 API 호출은 트랜잭션 범위 밖에서 수행 (롤백 불가)
List<DigestNews> digests = aiProcessingService.process();

// 채용 공고는 90일 이내 항목만 유효하다고 판단
LocalDateTime cutoff = LocalDateTime.now().minusDays(90);
// 나쁜 예 — WHAT 설명 (코드가 이미 설명함)

// 리스트 크기를 가져온다
int size = list.size();

// i를 1씩 증가
i++;

// post를 저장
postRepository.save(post);

TODO / FIXME 주석

작업 중 임시로 남기는 주석이지만, 커밋 전 반드시 제거한다.

// TODO: 페이징 처리 추가 필요 (현재 전체 조회)
// FIXME: NullPointerException 발생 가능 — null 체크 추가 필요
  • 커밋 시 TODO/FIXME가 남아있지 않도록 확인
  • 장기 과제인 경우 GitHub Issues로 관리

th:utext 사용 시 주석

신뢰되지 않은 데이터에 th:utext를 사용할 경우 반드시 사유를 주석으로 명시한다.

<!-- 관리자가 직접 등록한 HTML 콘텐츠, 사용자 입력 아님 -->
<div th:utext="${post.htmlContent}"></div>

주석 달지 않을 상황

코드가 명확할 때는 주석을 달지 않는다:

// 주석 불필요 — 메서드명이 충분히 설명
public PostDetailRes getPost(Long id) {
    return postRepository.findById(id)
            .map(PostDetailRes::from)
            .orElseThrow(() -> new IllegalArgumentException("포스트를 찾을 수 없습니다: " + id));
}

// 주석 불필요 — 변수명이 충분히 설명
boolean isDuplicate = postRepository.existsByTitle(req.getTitle());

체크리스트

  • [ ] 주석은 WHY 위주로 작성
  • [ ] WHAT 주석 제거 (코드가 설명)
  • [ ] 커밋 전 TODO/FIXME 제거 또는 이슈 등록
  • [ ] th:utext 사용 시 신뢰 근거 주석 포함
  • [ ] 클래스/public 메서드에 Javadoc 작성 (공개 API 수준)
AI 문서 검색

현재 페이지 내용을 기반으로 질문하세요.