Effective Kotlin - Reusability 2
코틀린의 재사용성을 활용하는 방법을 정리한다.
- 일반적인 알고리즘을 구현할 때, 제네릭을 사용해라
- 타입 파라미터의 shadowing 을 피해라
- 공통 모듈을 추출해서 여러 플랫폼에서 재사용해라
일반적인 알고리즘을 구현할 때, 제네릭을 사용해라
type parameter 를 가지는 함수를 generic function 이라고 한다.
예를 들어, type parameter T 를 가지는 filter function 이 있다.
1 | public inline fun <T> Iterable<T>.filter(predicate: (T) -> Boolean): List<T> { |
타입 파라미터는 구체적인 타입의 서브 타입만 사용하도록 타입을 제한할 수 있다.
타입에 제한이 걸려서, 내부에서 해당 타입이 제공하는 메서드를 사용할 수 있다.
아래를 보자.
Number 를 타입 파라미터 T 의 상한으로 지정한다.
그리고, 내부에서 Number 클래스에 정의되 메서드를 호출한다.
1 | fun <T: Number> oneHalf(value: T): Double { |
타입 파라미터의 shadowing 을 피해라
지역 파라미터가 외부 scope 에 있는 프로퍼티를 가리는 것을 shadowing 이라고 한다.
예를 들어,