Amenable
Amenable's Blog
Amenable
  • λΆ„λ₯˜ 전체보기 (189)
    • πŸ“‚ JAVA (87)
      • μ΄νŽ™ν‹°λΈŒ μžλ°” (65)
      • μ£Όμš” κ°œλ… (22)
    • πŸ“‚ 개발 μ„œμ  (22)
      • μ‹€μš©μ£Όμ˜ ν”„λ‘œκ·Έλž˜λ¨Έ (1)
      • 객체지ν–₯의 사싀과 μ˜€ν•΄ (2)
      • 클린 μ½”λ“œ (8)
      • ν•¨κ»˜ 자라기 (1)
      • 그림으둜 λ°°μš°λŠ” HTTP&Network Basic (10)
    • πŸ“‚ λ°μ΄ν„°λ² μ΄μŠ€ (8)
      • κ°œλ… (8)
      • λ¬Έμ œν’€μ΄ (0)
    • πŸ“‚ λ„€νŠΈμ›Œν¬ (14)
      • κ°œλ… (6)
      • 성곡과 μ‹€νŒ¨λ₯Ό κ²°μ •ν•˜λŠ” 1%의 λ„€νŠΈμ›Œν¬ 원리 (8)
    • πŸ“‚ μŠ€ν”„λ§ (13)
      • κΈ°λ³Έ κ°œλ… (13)
    • πŸ“‚ WEB (5)
    • πŸ“‚ 자료ꡬ쑰 (12)
      • κ°œλ… (2)
      • μ •λ ¬ (8)
      • 트리 (2)
    • πŸ“‚ μ•Œκ³ λ¦¬μ¦˜ (10)
      • μ΅œμ†Œμ‹ μž₯트리 (2)
      • μ΅œλ‹¨ 경둜 (2)
      • λ¬Έμžμ—΄ (2)
      • ETC (4)
    • πŸ“‚ μ•Œκ³ λ¦¬μ¦˜_λ¬Έμ œν’€μ΄ (4)
      • BOJ_λ°±μ€€ (4)
    • πŸ“‚ ν”„λ‘œκ·Έλž˜λ° (3)
    • πŸ“‚ DevOps (2)
      • 배포 (2)
    • πŸ“‚ ν›„κΈ° (8)
      • μš°μ•„ν•œ ν…Œν¬μ½”μŠ€(ν”„λ¦¬μ½”μŠ€) (4)
      • 2023λ…„ (3)
      • 2024λ…„ (1)
    • πŸ“‚ 회고 (1)
      • 2023λ…„ (1)

λΈ”λ‘œκ·Έ 메뉴

  • πŸš€ GitHub

ν‹°μŠ€ν† λ¦¬

hELLO Β· Designed By μ •μƒμš°.
Amenable
πŸ“‚ JAVA/μ΄νŽ™ν‹°λΈŒ μžλ°”

곡개된 APIμš”μ†Œμ—λŠ” 항상 λ¬Έμ„œν™” 주석을 μž‘μ„±ν•˜λΌ - [8μž₯. λ©”μ„œλ“œ(μ•„μ΄ν…œ56)]

곡개된 APIμš”μ†Œμ—λŠ” 항상 λ¬Έμ„œν™” 주석을 μž‘μ„±ν•˜λΌ - [8μž₯. λ©”μ„œλ“œ(μ•„μ΄ν…œ56)]
πŸ“‚ JAVA/μ΄νŽ™ν‹°λΈŒ μžλ°”

곡개된 APIμš”μ†Œμ—λŠ” 항상 λ¬Έμ„œν™” 주석을 μž‘μ„±ν•˜λΌ - [8μž₯. λ©”μ„œλ“œ(μ•„μ΄ν…œ56)]

2023. 12. 12. 18:33

πŸ“™ 1. λ¬Έμ„œν™” 주석 μž‘μ„± 방법

  μžλ°”μ—λŠ” μ†ŒμŠ€μ½”λ“œ νŒŒμΌμ—μ„œ λ¬Έμ„œν™” 주석(doc comment; μžλ°”λ… 주석)μ΄λΌλŠ” νŠΉμˆ˜ν•œ ν˜•νƒœλ‘œ 기술된 μ„€λͺ…을 μΆ”λ € API λ¬Έμ„œλ‘œ λ³€ν™˜ν•˜μ—¬ λ³΄μ—¬μ£ΌλŠ” μžλ°”λ…μ΄ μžˆλ‹€.

  λ¬Έμ„œν™” 주석을 μž‘μ„±ν•˜λŠ” κ·œμΉ™μ€ 'λ¬Έμ„œν™” 주석 μž‘μ„±λ²•(How to Write Doc Comments)'에 κΈ°μˆ λ˜μ–΄ μžˆλ‹€. ν•΄λ‹Ή λ¬Έμ„œμ— λ”ν•΄μ„œ μΆ”κ°€μ μœΌλ‘œ μ•Œμ•„μ•Ό ν•˜λŠ” λ‚΄μš©μ€ μ•„λž˜μ™€ κ°™λ‹€.

  • APIλ₯Ό μ˜¬λ°”λ‘œ λ¬Έμ„œν™”ν•˜λ €λ©΄ 곡개된 λͺ¨λ“  클래슀, μΈν„°νŽ˜μ΄μŠ€, λ©”μ„œλ“œ, ν•„λ“œ 선언에 λ¬Έμ„œν™” 주석을 달아야 ν•œλ‹€.
  • 직렬화할 수 μžˆλŠ” 클래슀라면 직렬화 ν˜•νƒœμ— κ΄€ν•΄μ„œλ„ 적어야 ν•œλ‹€.
  • κΈ°λ³Έ μƒμ„±μžμ—λŠ” λ¬Έμ„œν™” 주석을 달 방법이 μ—†μœΌλ‹ˆ 곡개 ν΄λž˜μŠ€λŠ” μ ˆλŒ€ κΈ°λ³Έ μƒμ„±μžλ₯Ό μ‚¬μš©ν•˜λ©΄ μ•ˆ λœλ‹€.
  • μœ μ§€λ³΄μˆ˜κΉŒμ§€ κ³ λ €ν•œλ‹€λ©΄ λŒ€λ‹€μˆ˜μ˜ κ³΅κ°œλ˜μ§€ μ•Šμ€ ν΄λž˜μŠ€, μΈν„°νŽ˜μ΄μŠ€, μƒμ„±μž, λ©”μ„œλ“œ, ν•„λ“œμ—λ„ λ¬Έμ„œν™” μ£Όμ„μ„ λ‹¬μ•„μ•Ό ν•œλ‹€.
  • λ©”μ„œλ“œμš© λ¬Έμ„œν™” μ£Όμ„μ—λŠ” ν•΄λ‹Ή λ©”μ„œλ“œμ™€ ν΄λΌμ΄μ–ΈνŠΈ μ‚¬μ΄μ˜ κ·œμ•½μ„ λͺ…λ£Œν•˜κ²Œ κΈ°μˆ ν•΄μ•Ό ν•œλ‹€.
  • μƒμ†μš©μœΌλ‘œ μ„€κ³„λœ 클래슀의 λ©”μ„œλ“œκ°€ μ•„λ‹ˆλΌλ©΄ κ·Έ λ©”μ„œλ“œκ°€ μ–΄λ–»κ²Œ λ™μž‘ν•˜λŠ”μ§€κ°€ μ•„λ‹ˆλΌ 무엇을 ν•˜λŠ”μ§€λ₯Ό κΈ°μˆ ν•΄μ•Ό ν•œλ‹€.
  • λ¬Έμ„œν™” μ£Όμ„μ—λŠ” ν΄λΌμ΄μ–ΈνŠΈκ°€ ν•΄λ‹Ή λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν•˜κΈ° μœ„ν•œ μ „μ œμ‘°κ±΄(precondition)을 λͺ¨λ‘ λ‚˜μ—΄ν•΄μ•Ό ν•œλ‹€.
  • λ˜ν•œ λ©”μ„œλ“œκ°€ μ„±κ³΅μ μœΌλ‘œ μˆ˜ν–‰λœ ν›„에 λ§Œμ‘±ν•΄μ•Ό ν•˜λŠ” μ‚¬ν›„쑰건(postcondition)도 λͺ¨λ‘ λ‚˜μ—΄ν•΄μ•Ό ν•œλ‹€.
  • μ „μ œμ‘°κ±΄κ³Ό μ‚¬ν›„μ‘°κ±΄λΏλ§Œ μ•„λ‹ˆλΌ λΆ€μž‘μš©λ„ λ¬Έμ„œν™”ν•΄μ•Ό ν•œλ‹€.
  • λ©”μ„œλ“œμ˜ 계약(contract)을 μ™„λ²½νžˆ κΈ°μˆ ν•˜λ €λ©΄ λͺ¨λ“  λ§€κ°œλ³€μˆ˜μ— @param νƒœκ·Έλ₯Ό, λ°˜ν™˜ νƒ€μž…μ΄ voidκ°€ μ•„λ‹ˆλΌλ©΄ @return νƒœκ·Έλ₯Ό, λ°œμƒν•  κ°€λŠ₯성이 μžˆλŠ” λͺ¨λ“  μ˜ˆμ™Έμ— @throws νƒœκ·Έλ₯Ό 달아야 ν•œλ‹€.
  • 클래슀λ₯Ό μƒμ†μš©μœΌλ‘œ 섀계할 λ•ŒλŠ” 자기 μ‚¬μš© νŒ¨ν„΄(self-use pattern)에 λŒ€ν•΄μ„œλ„ λ¬Έμ„œμ— 남겨 λ‹€λ₯Έ ν”„λ‘œκ·Έλž˜λ¨Έμ—κ²Œ κ·Έ λ©”μ„œλ“œλ₯Ό μ˜¬λ°”λ‘œ μž¬μ •μ˜ν•˜λŠ” 방법을 μ•Œλ €μ€˜μ•Ό ν•œλ‹€. (@implSpec ν™œμš©)
  • 각 λ¬Έμ„œν™” μ£Όμ„μ˜ 첫 번째 λ¬Έμž₯은 ν•΄λ‹Ή μš”μ†Œμ˜ μš”μ•½ μ„€λͺ…(summary description)으둜 κ°„μ£Όλœλ‹€.
  • μš”μ•½ μ„€λͺ…은 λ°˜λ“œμ‹œ λŒ€μƒμ˜ κΈ°λŠ₯을 κ³ μœ ν•˜κ²Œ κΈ°μˆ ν•΄μ•Ό ν•œλ‹€.
  • 클래슀, μΈν„°νŽ˜μ΄μŠ€, ν•„λ“œμ˜ μš”μ•½ μ„€λͺ…은 λŒ€μƒμ„ μ„€λͺ…ν•˜λŠ” λͺ…μ‚¬μ ˆμ΄μ–΄μ•Ό ν•œλ‹€.
  • μ œλ„€λ¦­ νƒ€μž…μ΄λ‚˜ μ œλ„€λ¦­ λ©”μ„œλ“œλ₯Ό λ¬Έμ„œν™”ν•  λ•ŒλŠ” λͺ¨λ“  νƒ€μž… λ§€κ°œλ³€μˆ˜μ— 주석을 달아야 ν•œλ‹€.
  • μ—΄κ±°νƒ€μž…μ„ λ¬Έμ„œν™”ν•  λ•ŒλŠ” μƒμˆ˜λ“€μ—λ„ 주석을 달아야 ν•œλ‹€.
  • μ—λ„ˆν…Œμ΄μ…˜ νƒ€μž…μ„ λ¬Έμ„œν™”ν•  λ•ŒλŠ” 멀버듀에도 λͺ¨λ‘ 주석을 달아야 ν•œλ‹€.
  • νŒ¨ν‚€μ§€λ₯Ό μ„€λͺ…ν•˜λŠ” λ¬Έμ„œν™” 주석은 package-info.java νŒŒμΌμ— μž‘μ„±ν•œλ‹€.
  • λͺ¨λ“ˆ μ‹œμŠ€ν…œμ„ μ‚¬μš©ν•œλ‹€λ©΄ λͺ¨λ“ˆ κ΄€λ ¨ μ„€λͺ…은 module-info.java νŒŒμΌμ— μž‘μ„±ν•œλ‹€.
  • 클래슀 ν˜Ήμ€ 정적 λ©”μ„œλ“œκ°€ μŠ€λ ˆλ“œ μ•ˆμ „ν•˜λ“  κ·Έλ ‡μ§€ μ•Šλ“ , μŠ€λ ˆλ“œ μ•ˆμ „ μˆ˜μ€€μ„ λ°˜λ“œμ‹œ API μ„€λͺ…에 포함해야 ν•œλ‹€.
  • λ³΅μž‘ν•œ API라면 λ¬Έμ„œν™” 주석 외에도 전체 μ•„ν‚€ν…μ²˜λ₯Ό μ„€λͺ…ν•˜λŠ” 링크λ₯Ό μ œκ³΅ν•˜λ©΄ μ’‹λ‹€.

 

πŸ“™ 2. λ¬Έμ„œν™” 주석 μž‘μ„± μ‹œ 도움이 λ˜λŠ” νƒœκ·Έ λͺ©λ‘

πŸ“Œ 1. HTML νƒœκ·Έ μ‚¬μš©

/**
 * ...
 * <p>This method is <i>not</i> guarenteed to run in constant</p>
 * ...
 */

  μžλ°”λ… μœ ν‹Έλ¦¬ν‹°λŠ” λ¬Έμ„œν™” 주석을 HTML둜 λ³€ν™˜ν•˜λ―€λ‘œ λ¬Έμ„œν™” 주석 μ•ˆμ˜ HTML μš”μ†Œλ“€μ΄ μ΅œμ’…μ μœΌλ‘œ HTML λ¬Έμ„œμ— λ°˜μ˜λœλ‹€.

πŸ“Œ 2. {@code}

/**
 * ...
 * @throws IndexOutOfBoundsException if the index is out of range
 *          ({@code index < 0 || index >= this.size()})
 * ...
 */

  νƒœκ·Έλ‘œ 감싼 λ‚΄μš©μ— ν¬ν•¨λœ HTML μš”μ†Œλ‚˜ λ‹€λ₯Έ μžλ°”λ… νƒœκ·Έλ₯Ό λ¬΄μ‹œν•œλ‹€. κ·Έλ ‡κΈ° λ•Œλ¬Έμ— HTML λ©”νƒ€λ¬ΈμžμΈ < 기호 등을 별닀λ₯Έ 처리 없이 λ°”λ‘œ μ‚¬μš©ν•  수 μžˆλŠ” 것이닀.

  μ—¬λŸ¬ μ€„λ‘œ 된 μ½”λ“œλ₯Ό μ˜ˆμ‹œλ‘œ λ„£κ³  μ‹ΆμœΌλ©΄ μ•„λž˜μ™€ 같이 <pre> νƒœκ·Έλ₯Ό μ΄μš©ν•˜λ©΄ λœλ‹€.

/**
 * ...
 * @throws IndexOutOfBoundsException if the index is out of range
 *          (<pre>{@code ... μ½”λ“œ ... }</pre>)
 * ...
 */

πŸ“Œ 3. {@literal}

/**
 * ...
 * {@literal {r} < 1} 이면 κΈ°ν•˜ μˆ˜μ—΄μ΄ μˆ˜λ ΄ν•œλ‹€.
 * ...
 */

  {@literal}을 μ΄μš©ν•˜μ—¬ HTML λ©”νƒ€λ¬Έμžλ₯Ό ν¬ν•¨μ‹œν‚¬ 수 μžˆλ‹€. 이것 λ˜ν•œ {@code}처럼 HTML λ§ˆν¬μ—…μ΄λ‚˜ μžλ°”λ… νƒœκ·Έλ₯Ό λ¬΄μ‹œν•˜κ²Œ ν•΄ μ€€λ‹€. {@code}μ™€μ˜ 차이점은 μ½”λ“œ 폰트둜 λ Œλ”λ§μ„ ν•˜μ§€ μ•ŠλŠ”λ‹€λŠ” 것이닀.

  그리고 이λ₯Ό μ΄μš©ν•˜μ—¬ μ˜λ„μΉ˜ μ•Šμ€ λ§ˆμΉ¨ν‘œλ₯Ό ν¬ν•¨ν•œ ν…μŠ€νŠΈλ₯Ό μž‘μ„±ν•  수 μžˆλ‹€.

/**
 * ...
 * A suspect, such as Colonel Mustard or {@literal Mrs. Peacock}.
 * ...
 */

πŸ“Œ 4. {@index}

/**
 * ...
 * This method complies with the {@index IEEE 754} standard.
 * ...
 */

  μžλ°” 9λΆ€ν„°λŠ” μžλ°”λ…μ΄ μƒμ„±ν•œ HTML λ¬Έμ„œμ— 검색(색인) κΈ°λŠ₯이 μΆ”κ°€λ˜μ—ˆλ‹€. {@index} νƒœκ·Έλ₯Ό μ‚¬μš©ν•΄ APIμ—μ„œ μ€‘μš”ν•œ μš©μ–΄λ₯Ό μΆ”κ°€λ‘œ μƒ‰μΈν™” ν•  μˆ˜ μžˆλ‹€.

πŸ“Œ 5. {@inheritDoc}

  {@inhericDoc} νƒœκ·Έλ₯Ό μ‚¬μš©ν•΄ μƒμœ„ νƒ€μž…μ˜ λ¬Έμ„œν™” 주석 일뢀λ₯Ό 상속할 수 μžˆλ‹€. μ΄λŠ” μžμ‹ μ΄ κ΅¬ν˜„ν•œ μΈν„°νŽ˜μ΄μŠ€μ˜ λ¬Έμ„œν™” μ£Όμ„μ„ λ³΅μ‚¬ν•΄ λΆ™μ—¬ λ„£μ§€ μ•Šκ³  μž¬μ‚¬μš©ν•  μˆ˜ μžˆλ‹€λŠ” λœ»μ΄λ‹€.

 

 

ν•΄λ‹Ή 글은 Joshua Bloch λ‹˜μ˜ 'Effective Java 3/E'λ₯Ό μ°Έκ³ ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

 

'πŸ“‚ JAVA > μ΄νŽ™ν‹°λΈŒ μžλ°”' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

μ§€μ—­λ³€μˆ˜μ˜ λ²”μœ„λ₯Ό μ΅œμ†Œν™”ν•˜λΌ - [8μž₯. 일반적인 ν”„λ‘œκ·Έλž˜λ° 원칙(μ•„μ΄ν…œ57)]  (0) 2023.12.12
μ˜΅μ…”λ„ λ°˜ν™˜μ€ μ‹ μ€‘νžˆ ν•˜λΌ - [8μž₯. λ©”μ„œλ“œ(μ•„μ΄ν…œ55)]  (0) 2023.12.12
null이 μ•„λ‹Œ, 빈 μ»¬λ ‰μ…˜μ΄λ‚˜ 배열을 λ°˜ν™˜ν•˜λΌ - [8μž₯. λ©”μ„œλ“œ(μ•„μ΄ν…œ54)]  (0) 2023.12.11
κ°€λ³€μΈμˆ˜λŠ” μ‹ μ€‘νžˆ μ‚¬μš©ν•˜λΌ - [8μž₯. λ©”μ„œλ“œ(μ•„μ΄ν…œ53)]  (0) 2023.12.11
λ‹€μ€‘μ •μ˜λŠ” μ‹ μ€‘νžˆ μ‚¬μš©ν•˜λΌ - [8μž₯. λ©”μ„œλ“œ(μ•„μ΄ν…œ52)]  (1) 2023.12.11
  • πŸ“™ 1. λ¬Έμ„œν™” 주석 μž‘μ„± 방법
  • πŸ“™ 2. λ¬Έμ„œν™” 주석 μž‘μ„± μ‹œ 도움이 λ˜λŠ” νƒœκ·Έ λͺ©λ‘
'πŸ“‚ JAVA/μ΄νŽ™ν‹°λΈŒ μžλ°”' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
  • μ§€μ—­λ³€μˆ˜μ˜ λ²”μœ„λ₯Ό μ΅œμ†Œν™”ν•˜λΌ - [8μž₯. 일반적인 ν”„λ‘œκ·Έλž˜λ° 원칙(μ•„μ΄ν…œ57)]
  • μ˜΅μ…”λ„ λ°˜ν™˜μ€ μ‹ μ€‘νžˆ ν•˜λΌ - [8μž₯. λ©”μ„œλ“œ(μ•„μ΄ν…œ55)]
  • null이 μ•„λ‹Œ, 빈 μ»¬λ ‰μ…˜μ΄λ‚˜ 배열을 λ°˜ν™˜ν•˜λΌ - [8μž₯. λ©”μ„œλ“œ(μ•„μ΄ν…œ54)]
  • κ°€λ³€μΈμˆ˜λŠ” μ‹ μ€‘νžˆ μ‚¬μš©ν•˜λΌ - [8μž₯. λ©”μ„œλ“œ(μ•„μ΄ν…œ53)]
Amenable
Amenable
CS, μžλ°”, 자료ꡬ쑰, μ•Œκ³ λ¦¬μ¦˜, μŠ€ν”„λ§, μŠ€ν”„λ§ λΆ€νŠΈμ— ν•΄λ‹Ήν•˜λŠ” κ°œλ°œμ— κ΄€ν•œ λ‚΄μš©μ„ κ³΅μœ ν•©λ‹ˆλ‹€.

ν‹°μŠ€ν† λ¦¬νˆ΄λ°”

단좕킀

λ‚΄ λΈ”λ‘œκ·Έ

λ‚΄ λΈ”λ‘œκ·Έ - κ΄€λ¦¬μž ν™ˆ μ „ν™˜
Q
Q
μƒˆ κΈ€ μ“°κΈ°
W
W

λΈ”λ‘œκ·Έ κ²Œμ‹œκΈ€

κΈ€ μˆ˜μ • (κΆŒν•œ μžˆλŠ” 경우)
E
E
λŒ“κΈ€ μ˜μ—­μœΌλ‘œ 이동
C
C

λͺ¨λ“  μ˜μ—­

이 νŽ˜μ΄μ§€μ˜ URL 볡사
S
S
맨 μœ„λ‘œ 이동
T
T
ν‹°μŠ€ν† λ¦¬ ν™ˆ 이동
H
H
단좕킀 μ•ˆλ‚΄
Shift + /
⇧ + /

* λ‹¨μΆ•ν‚€λŠ” ν•œκΈ€/영문 λŒ€μ†Œλ¬Έμžλ‘œ 이용 κ°€λŠ₯ν•˜λ©°, ν‹°μŠ€ν† λ¦¬ κΈ°λ³Έ λ„λ©”μΈμ—μ„œλ§Œ λ™μž‘ν•©λ‹ˆλ‹€.