C#에서 ///는 일반적인 주석(//)과는 목적이 조금 다릅니다.
이건 XML 주석(XML documentation comment)이라고 하며, 코드 문서를 자동 생성하거나 툴팁 형태로 설명을 제공할 때 사용됩니다.
✅ /// 주석의 역할
C#에서 ///는 메서드, 클래스, 속성 등 코드 요소를 문서화하기 위해 사용하는 XML 형식의 주석입니다.
이 주석은 Visual Studio, JetBrains Rider 같은 IDE에서 툴팁 설명으로도 표시되며,
docfx, Sandcastle, Doxygen 같은 도구를 사용하면 이 주석을 기반으로 API 문서 자동 생성도 할 수 있어요.
🧾 기본 형식
/// <summary>
/// 이 메서드는 두 수를 더합니다.
/// </summary>
/// <param name="a">첫 번째 정수</param>
/// <param name="b">두 번째 정수</param>
/// <returns>두 수의 합</returns>
public int Add(int a, int b)
{
return a + b;
}
📚 자주 사용하는 XML 태그
태그 설명
<summary> | 해당 요소의 간단한 설명 |
<param> | 파라미터 설명 |
<returns> | 반환값 설명 |
<remarks> | 추가 설명 (예: 제한사항, 사용법) |
<example> | 사용 예시 코드 |
<exception> | 예외 발생 가능성 명시 |
🎯 사용 예시 2: 클래스에 사용
/// <summary>
/// 사용자의 로그인 상태를 관리하는 클래스입니다.
/// </summary>
public class AuthManager
{
/// <summary>
/// 현재 로그인된 사용자 ID를 반환합니다.
/// </summary>
public string GetCurrentUserId()
{
return "user123";
}
}
💡 장점
- 코드에 문서를 직접 연결할 수 있음
- 유지보수가 쉬움 (코드 변경과 문서 동기화가 쉬움)
- IDE에서 자동 툴팁 제공
- 대규모 프로젝트에서 API 문서 자동 생성 가능
❗ 주의사항
- ///는 코드 요소 바로 위에 있어야 적용됩니다.
- 자동 문서 생성 도구를 쓰려면 프로젝트 설정에서 XML 문서 출력을 켜야 해요 (.csproj에서 <DocumentationFile>)
✅ 요약
항목 내용
주석 유형 | XML 문서화 주석 (///) |
목적 | 코드 설명 + 자동 API 문서 생성 |
사용 위치 | 클래스, 메서드, 속성 등 코드 선언부 위 |
사용 도구 | Visual Studio, docfx, Doxygen 등 |
실전 프로젝트에서 활용하는 예시
실전 프로젝트 스타일로 활용한 예시 (실제 웹 API, 유틸리티 클래스, 서비스 메서드 등에 어떻게 쓰는지 감 잡는 데 도움이 될 거예요.)
✅ 예시 1: 서비스 클래스 메서드에 /// 주석 달기
/// <summary>
/// 사용자 관련 비즈니스 로직을 담당하는 서비스 클래스입니다.
/// </summary>
public class UserService
{
/// <summary>
/// 지정된 사용자 ID로 사용자의 이름을 조회합니다.
/// </summary>
/// <param name="userId">조회할 사용자의 고유 ID</param>
/// <returns>사용자의 이름. 없으면 null 반환</returns>
public string GetUserNameById(int userId)
{
// 데이터베이스에서 사용자 이름을 가져오는 로직 (생략)
return "홍길동";
}
/// <summary>
/// 새로운 사용자를 등록합니다.
/// </summary>
/// <param name="name">사용자 이름</param>
/// <param name="email">사용자 이메일</param>
/// <returns>생성된 사용자 ID</returns>
/// <exception cref="ArgumentException">이메일 형식이 유효하지 않은 경우</exception>
public int RegisterUser(string name, string email)
{
if (!email.Contains("@"))
{
throw new ArgumentException("유효하지 않은 이메일 형식입니다.");
}
// 등록 로직 생략
return 1234; // 임의의 사용자 ID
}
}
✅ 예시 2: 유틸리티 클래스에 문서 주석 달기
/// <summary>
/// 날짜 관련 유틸리티 메서드를 제공합니다.
/// </summary>
public static class DateUtils
{
/// <summary>
/// 주어진 날짜가 평일인지 확인합니다.
/// </summary>
/// <param name="date">확인할 날짜</param>
/// <returns>평일이면 true, 주말이면 false</returns>
public static bool IsWeekday(DateTime date)
{
return date.DayOfWeek != DayOfWeek.Saturday &&
date.DayOfWeek != DayOfWeek.Sunday;
}
}
✅ 예시 3: example, remarks 사용 예
/// <summary>
/// 사용자 비밀번호를 해싱합니다.
/// </summary>
/// <param name="plainPassword">원본 비밀번호</param>
/// <returns>SHA256으로 해시된 문자열</returns>
/// <remarks>
/// 해시 결과는 Base64 인코딩되어 반환됩니다.
/// </remarks>
/// <example>
/// string hash = PasswordHasher.Hash("mypassword");
/// </example>
public static class PasswordHasher
{
public static string Hash(string plainPassword)
{
// 해싱 로직 생략
return "hashed_password";
}
}
💡 Visual Studio에서 활용 팁
- ///를 메서드 위에 입력하면 자동으로 <summary>, <param>, <returns> 틀을 만들어줘요.
- 마우스를 코드 위에 올리면 주석이 툴팁으로 표시되어 개발자 경험이 좋아져요.
✅ 요약
이런 식으로 /// XML 주석을 달면:
- 코드의 자기 설명성이 높아지고
- 팀원/미래의 나에게 친절한 코드가 되고
- 자동 API 문서 생성 도구도 쓸 수 있어요
'UNITY > C#' 카테고리의 다른 글
[C#] ConcurrentDictionary :: 멀티스레드 환경을 위한 Dictionary (2) | 2025.07.07 |
---|---|
리스트와 딕셔너리 (0) | 2024.11.22 |
=> 연산자 (람다 표현식) (0) | 2024.10.21 |
C# interface :: 'IEnumerator'와 'IEnumerable' (자료👀) (0) | 2024.06.25 |
C# Statements :: using, yield (0) | 2024.06.24 |