아이템 17 - 이름 있는 아규먼트를 사용하라

ds_chanin

·

2023. 4. 27. 01:08


코드에서 아규먼트의 의미가 명확하지 않은 경우는 모든 코드를 작성하다 느낄 수 있는 부분이다.

val text = (1..10).joinToString("|") // `|`이 무엇을 의미하는지?

joinToString에 대해 알고 있다면 구분자라는 것을 알 수 있지만 아니라면 이해하기 힘들 수 있다.

파라미터가 명확하지 않은 경우에는 이름있는 아규먼트(named argument)를 이용하여 명확하게 만들자.

val text = (1..10).joinToString(separator = "|")

separator를 변수로 선언하여 사용해도 좋지만 아래와 같은 문제가 발생 할 수 있다.

  • 실제로 코드에서 사용되는지 확신 할 수 없다. (사실 이건 IDE가 다 알려주니 큰 문제가 되지 않는다.)
  • 변수를 잘못 만들 수 있다.
  • 함수 호출시 엉뚱한 위치에 배치할 수 있다. (가장 큰 문제)

따라서 파라미터 입력순서와 관계없이 사용할수 있고 이름을 기반으로 값이 무엇을 나타내는지 명확히 알 수 있도록 이름 있는 아규먼트를 사용하도록 하자.

특히 다음과 같은 경우 더 추천한다.

  • 디폴트 아규먼트의 경우
  • 같은 타입의 파라미터가 많은 경우
  • 함수 타입의 파라미터가 있는 경우 (단, 마지막에 위치한 경우 제외)

코틀린에서 자바 함수를 사용하는 경우 이름있는 아규먼트를 사용할 수 없다. 이러한 경우에는 코틀린 코드로 한번 감싸서 이름있는 아규먼트를 사용하는것도 좋은 방법이다.