본문 바로가기
UNITY/C#

[C#] /// 주석(XML 주석)의 역할

by 램플릿 2025. 5. 31.

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 문서 생성 도구도 쓸 수 있어요