아이템 17 - 이름 있는 아규먼트를 사용하라
ds_chanin
·2023. 4. 27. 01:08
코드에서 아규먼트의 의미가 명확하지 않은 경우는 모든 코드를 작성하다 느낄 수 있는 부분이다.
val text = (1..10).joinToString("|") // `|`이 무엇을 의미하는지?
joinToString에 대해 알고 있다면 구분자라는 것을 알 수 있지만 아니라면 이해하기 힘들 수 있다.
파라미터가 명확하지 않은 경우에는 이름있는 아규먼트(named argument)를 이용하여 명확하게 만들자.
val text = (1..10).joinToString(separator = "|")
separator를 변수로 선언하여 사용해도 좋지만 아래와 같은 문제가 발생 할 수 있다.
- 실제로 코드에서 사용되는지 확신 할 수 없다. (사실 이건 IDE가 다 알려주니 큰 문제가 되지 않는다.)
- 변수를 잘못 만들 수 있다.
- 함수 호출시 엉뚱한 위치에 배치할 수 있다. (가장 큰 문제)
따라서 파라미터 입력순서와 관계없이 사용할수 있고 이름을 기반으로 값이 무엇을 나타내는지 명확히 알 수 있도록 이름 있는 아규먼트를 사용하도록 하자.
특히 다음과 같은 경우 더 추천한다.
- 디폴트 아규먼트의 경우
- 같은 타입의 파라미터가 많은 경우
- 함수 타입의 파라미터가 있는 경우 (단, 마지막에 위치한 경우 제외)
코틀린에서 자바 함수를 사용하는 경우 이름있는 아규먼트를 사용할 수 없다. 이러한 경우에는 코틀린 코드로 한번 감싸서 이름있는 아규먼트를 사용하는것도 좋은 방법이다.
'스터디 > 이펙티브코틀린' 카테고리의 다른 글
아이템 21 - 일반적인 프로퍼티 패턴은 프로퍼티 위임으로 만들어라 (0) | 2023.05.14 |
---|---|
아이템 19 - knowledge를 반복하여 사용하지 말라 (0) | 2023.05.03 |
아이템 16 - 프로퍼티는 동작이 아니라 상태를 나타내야 한다 (0) | 2023.04.27 |
아이템 15 - 리시버를 명시적으로 참조하라 (0) | 2022.03.25 |
아이템 14 - 변수 타입이 명확하지 않은 경우 확실하게 지정하라 (0) | 2022.03.25 |