-
17장 - 이름 있는 아규먼트를 사용하라Kotlin/Effective Kotlin 요약 2023. 2. 16. 00:01728x90
이름 있는 아규먼트란?
val iDontLikeThis: String = (1..10).joinToString("|") val iLikeThis: String = ((1..10).joinToString(separator = "|")) val separator: String = "|" val iLoveThis: String = ((1..10).joinToString(separator = separator)) println(iLikeThis) //결과 : 1|2|3|4|5|6|7|8|9|10
joinToString 메서드를 잘 아는 사람은 |가 separator를 의미함을 잘 알 수 있습니다.
하지만 모른다면, 이를 접두사로 생각할 수도 있습니다.
파라미터의 이름을 명확하게 직접 지정하는 방법을 이름 있는 아규먼트라고 합니다.
개인적으로 자바를 사용할 때 생성자의 파라미터가 많아지면 헷갈리기 때문에 빌더 패턴을 이용하곤 했는데 코틀린에서는 언어에서 지원해주기 때문에 매우 좋아하는 아이템입니다.
이름 있는 야규먼트의 장점
1. 파라미터의 순서를 잘못 입력하는 문제를 막을 수 있습니다.
2. 개발자가 인자를 명확하게 인지할 수 있습니다.
다음과 같은 경우에는 더 추천됩니다.
- 디폴트 아규먼트가 있는 경우
- 같은 타입의 파라미터가 많은 경우
- 함수 타입의 파라미터가 있는 경우
디폴트 아규먼트
fun main() { defaultArgument("custom") //컴파일 에러 발생 defaultArgument("hello ", "world ", "custom") //이렇게 써야함.. defaultArgument(c="custom") //컴파일 에러 발생x //hello world custom //hello world custom } fun defaultArgument( a: String = "hello ", b: String = "world ", c: String, ){ println(a + b + c) }
함수 타입 파라미터
fun main() { call(before = {print("CALL")}) call(after = {print("CALL")}) } fun call(before: ()->Unit = {}, after: ()->Unit = {}){ before() }
이름을 붙이면 훨씬 더 쉽게 이해할 수 있습니다.
만약 이름이 없다면? before인지 after인지 어떤 의도인지 파악하기 매우 힘들 것 같습니다.
728x90'Kotlin > Effective Kotlin 요약' 카테고리의 다른 글
19장 - knowlege를 반복하여 사용하지 말라 (0) 2023.02.18 18장 - 코딩 컨벤션을 지켜라 (0) 2023.02.17 16장 - 프로퍼티는 동작이 아니라 상태를 나타내야 한다 (0) 2023.02.15 15장 - 리시버를 명시적으로 참조하라 (0) 2023.02.13 14장 - 변수 타입이 명확하지 않은 경우 확실하게 지정하라 (0) 2023.02.12