더북(TheBook)

예제 11-1에서 새로운 기능이 사용된 부분은 앞서 설명한 반환 타입과 return 문 정도다. return 문에서는 튜플 리터럴을 다음과 같이 사용했다.

return (min, max)

지금까지 튜플 리터럴은 그저 튜플 값을 만들기 위해서 사용했을 뿐, 실제 튜플 리터럴이 무슨 타입인지 살펴보지 않았다. 당분간 이에 대해서는 모호하게 둘 생각이다. C# 7.0을 사용하기 전에는 튜플의 개별 요소에 이름을 지정할 수 없었을 것이다. 그리고 앞 예에서 튜플 내의 min, max는 메서드 내에서 동일 이름을 가진 지역 변수를 이용해 그 값을 설정했다.

» 튜플 요소의 이름은 변수 이름처럼 공들여 정하자


튜플 리터럴에 사용된 변수 이름이 메서드의 반환 타입에 사용된 이름과 일치하는 것은 그저 우연일까? 사실 컴파일러가 코드를 읽을 때는 이 메서드의 반환 타입을 (int waffle, int iceCream)이라고 선언해도 상관없다.

하지만 사람이 코드를 읽을 때는 이야기가 다르다. 반환된 튜플 내 요소의 이름은 메서드 내에서 동일한 이름을 가진 변수와 같은 의미로 사용되었을 것으로 기대한다. 만약 전혀 다른 이름을 사용했다면 프로그램에 버그가 있는 것은 아닌지, 더 나은 이름은 없는지 다시 한 번 고민해 봐야 한다.

정확한 용어를 정의하기 전에 튜플 타입의 애리티(arity)에 대해서 알아보자. 애리티란 타입 매개변수의 개수를 의미한다. 예를 들어 (int, long)의 애리티는 2이다. 그리고 ("a", "b", "c")의 애리티는 3이다. 요소의 타입 종류는 애리티와는 무관하다.

Note ≡


사실 애리티는 공식적인 용어가 아니며, 제네릭에서 타입 매개변수의 개수를 나타내기 위해 사용하던 개념이다. List<T> 타입은 애리티가 1이며, Dictionary<TKey, TValue>의 애리티는 2이다.

튜플 요소의 이름을 어떻게 명명하는 것이 좋은지는 튜플 리터럴과 관련하여 C# 7.1에서 개선된 내용과도 일부 관련이 있다.

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