🔥 타입 매개변수 이름 짓기
타입 매개변수를 잘 이름 짓는 것은 제네릭 코드의 가독성과 이해도를 높이는 데 중요한 역할을 합니다. 대부분의 경우 타입 매개변수는 해당 제네릭 타입이나 함수와의 관계를 나타내는 의미 있는 이름을 갖습니다.
예를 들어 Dictionary<Key, Value>
에서는 Key
와 Value
라는 이름을 통해 딕셔너리에서 키와 값으로 사용되는 타입임을 명확히 알 수 있지요. Array<Element>
에서도 마찬가지로 Element
라는 이름이 배열의 요소로 쓰이는 타입 매개변수임을 나타냅니다.
// Key와 Value라는 이름을 통해 딕셔너리의 키와 값 타입을 나타냅니다. var numberNames: Dictionary<Int, String> = [1: "One", 2: "Two", 3: "Three"] // Element는 배열의 요소 타입을 의미합니다. var primes: Array<Int> = [2, 3, 5, 7, 11, 13]
swift
하지만 항상 이런 식으로 의미 있는 이름을 붙일 수 있는 것은 아닙니다. 타입 매개변수와 제네릭 타입 또는 함수 사이에 특별한 관계가 없다면, 전통적으로 T
, U
, V
와 같은 단일 대문자를 사용하여 이름을 짓습니다.
앞서 본 swapTwoValues(_:_:)
함수에서 사용한 T
가 그 예시죠. 여기서 T
는 특정 역할을 나타내기보다는 임의의 타입을 나타내기 위한 용도로 쓰였습니다.
func swapTwoValues<T>(_ a: inout T, _ b: inout T) { // T는 특별한 의미를 갖지 않는 임의의 타입입니다. let temporaryA = a a = b b = temporaryA }
swift
타입 매개변수의 수가 많아진다면 T
, U
, V
, W
순으로 이름을 붙이는 것이 일반적인 관례입니다.
func doSomething<T, U, V>(t: T, u: U, v: V) { // 여러 개의 타입 매개변수를 사용할 때는 T, U, V 순으로 이름을 짓습니다. // ... }
swift
이렇게 적절한 이름 규칙을 사용하면 제네릭 코드의 의도를 더 명확히 전달할 수 있고, 다른 개발자들도 코드를 더 쉽게 이해할 수 있습니다.
그러니 제네릭을 사용할 때는 타입 매개변수의 이름도 신중하게 선택하세요. 가능하다면 역할을 잘 나타내는 이름을 붙이고, 그렇지 않다면 관용적인 이름 규칙을 따르는 것이 좋겠죠?
타입 매개변수의 이름은 사소해 보일 수 있지만, 코드의 가독성에 큰 영향을 미친답니다. 앞으로 제네릭을 사용할 때 이 점을 꼭 기억해 주시기 바랍니다!