더북(TheBook)
public MoveResult MoveContents(TopicId from, TopicId to) {
    if (from is null) {
        throw new ArgumentNullException(nameof(from));
    }
    if (to is null) {
        throw new ArgumentNullException(nameof(to));
    }
    // 실제 코드
    return MoveResult.Success;
}

Note ≣

is null 구문이 낯설게 보일 수 있다. 나는 최근 마이크로소프트의 선임급 엔지니어들이 트위터에서 벌인 토론을 읽은 후 x == null보다 is null을 사용하기 시작했다. is 연산자는 오버로드될 수 없으므로 항상 정확한 결과를 반환하는 것이 보장된다. 마찬가지로 x != null 대신 x is object 구문을 비슷하게 사용할 수 있다. 내 코드 안에서는 non-nullable 검사를 사용하면 널 검사를 수행할 필요가 없지만, 라이브러리를 게시할 경우라면 외부 다른 사람의 코드에서 널을 사용해 코드를 호출할 수 있다. 이 경우에 널 검사를 명시적으로 수행해야 할 수도 있다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.