아이템 6: nameof() 연산자를 적극 활용하라

분산 시스템이 점차 대중화됨에 따라 서로 다른 시스템 사이에 데이터를 주고받아야 하는 일이 많아졌다.

이는 이질적인 플랫폼과 서로 다른 언어로 개발된 프로그램 사이에서 데이터를 주고 받아야 하는 일이 많아졌다는 것을 의미한다.

이러한 차이를 극복하기 위해 이름이나 문자열 식별자에 의존하는 간단한 라이브러리들이 많이 사용되곤 한다.

하지만 이런 방식은 간편하지만 추가적인 비용이 발생한다는 것이다.

대표적인 단점이 타입 정보를 손실한다는 것

이러한 단점을 극복하기 위해 C# 6.0에서는 nameof() 연산자를 도입했다.

이 연산자는 컴파일 시점에 표현식의 이름을 문자열로 반환한다.

이를 통해 문자열 식별자를 사용하는 것과 같은 편리함을 제공하면서도 타입 정보를 손실하지 않는다.

public void Save<T>(T item)
{
    if (item == null)
    {
        throw new ArgumentNullException(nameof(item));
    }
}

위의 코드에서 nameof(item)은 “item”을 반환한다.

이를 통해 item이 null인 경우 ArgumentNullException을 발생시킬 때, item의 이름을 문자열로 반환할 수 있다.

이를 통해 코드를 유지보수하기 쉽게 만들 수 있다.

nameof 연산자는 즉, 컴파일 시점에 표현식의 이름을 문자열로 반환한다.

nameof() 연산자는 항상 로컬 이름을 문자열로 반환하는 역할을 수행한다. 완전히 정규화된 이름(ex : System.Int.MaxValue)을 사용하더라도 항상 로컬 이름(MaxValue)를 반환한다.

댓글남기기