본문 바로가기
Android/Kotlin

[Android/Kotlin] 람다를 사용하는 두 가지 방식: 함수 인자와 마지막 인자 문법

by quessr 2024. 9. 9.

Kotlin에서 함수의 마지막 인자가 람다일 때 사용할 수 있는 두 가지 스타일에 대해 알아보겠습니다. 이 두 스타일은 구문적으로 차이가 있지만 기능적으로 동일합니다. 이번 포스팅에서는 두 가지 표현의 차이점과 언제 어떤 스타일을 사용할지에 대해 설명하겠습니다.

ITEM_TYPE_PROMO -> GamePromoViewHolder(
    inflateBinding(ItemGameListPromoBinding::inflate),
    getGameList = { getGameList.value }
)

 

위 코드는 GamePromoViewHolder에 람다를 전달할 때 명시적으로 인자를 지정한 방식입니다. 반면, 아래 코드는 람다를 마지막 인자로 전달할 때 Kotlin의 문법적 편의를 활용한 예시입니다.

GamePromoViewHolder(
    inflateBinding(ItemGameListPromoBinding::inflate)
) { getGameList.value }

 

이 두 코드는 결국 동일한 동작을 하지만, 구문적으로 차이가 있습니다. 이 차이와 두 가지 방식의 장단점을 알아보겠습니다.

첫 번째 스타일: 명시적인 함수 인자로 람다 전달

GamePromoViewHolder(
    inflateBinding(ItemGameListPromoBinding::inflate),
    getGameList = { getGameList.value }
)

 

이 방식은 함수의 인자를 명시적으로 정의하는 스타일입니다. 여기서는 GamePromoViewHolder에 두 개의 인자를 전달하고 있습니다. 두 번째 인자 getGameList에는 람다를 전달하는데, 인자의 이름을 명확히 지정하여 인자의 의미를 더 명확하게 전달합니다.

장점

  • 명확성: 각 인자가 무엇을 의미하는지 명확하게 알 수 있습니다. 코드 가독성이 더 높아지는 경우가 많습니다.
  • 여러 인자를 처리할 때 유리: 함수 인자가 여러 개 있을 때 각 인자를 명시적으로 구분할 수 있어 유용합니다.

단점

  • 코드가 조금 길어질 수 있음: 특히 람다가 함수의 마지막 인자일 경우, 코드를 간결하게 작성하는 Kotlin의 문법적 편의를 사용하지 못하게 됩니다.

두 번째 스타일: 마지막 인자로 람다 전달

GamePromoViewHolder(
    inflateBinding(ItemGameListPromoBinding::inflate)
) { getGameList.value }

 

이 방식은 Kotlin에서 흔히 사용되는 패턴으로, 함수의 마지막 인자가 람다일 때 괄호 밖으로 람다를 뺄 수 있는 문법을 활용한 스타일입니다. 함수의 마지막 인자가 람다인 경우, 가독성을 위해 괄호 안에 있지 않고 중괄호로 바로 람다를 표현할 수 있습니다.

장점

  • 간결성: 코드가 더 짧고 간결해집니다. 특히 함수의 마지막 인자가 람다인 경우 이 스타일을 많이 사용합니다.
  • Kotlin의 관용적인 패턴: 많은 Kotlin 코드베이스에서 이 패턴을 자주 사용하여, Kotlin의 장점을 더욱 살리는 코드 스타일입니다.

단점

  • 명확성 감소: 인자가 람다 외에도 여러 개일 경우, 각 인자가 무엇을 의미하는지 한눈에 파악하기 어려울 수 있습니다. 특히 여러 개의 인자가 있을 때는 가독성이 떨어질 수 있습니다.

두 방식의 차이점 요약

  1. 구문적 차이:
    •   첫 번째 스타일은 함수의 인자를 명확히 지정하여 전달하는 방식입니다.
    •   두 번째 스타일은 함수의 마지막 인자가 람다일 때, 중괄호를 사용해 람다를 간결하게 작성하는 방식입니다.
  2. 사용 시점:
    •   첫 번째 스타일은 함수의 인자가 여러 개 있을 때 명확하게 구분하고 싶을 때 유용합니다.
    •   두 번째 스타일단일 인자거나 마지막 인자가 람다일 때 가독성을 높이기 위해 많이 사용됩니다.
  3. 코드 가독성:
    •   첫 번째 스타일은 명확성을 더 중시하는 반면, 두 번째 스타일은 간결성을 중시합니다.

언제 어떤 스타일을 사용해야 할까?

  • 여러 인자가 있는 함수에서는 첫 번째 스타일을 사용하여 코드의 명확성을 높이는 것이 좋습니다.
  • 람다만 사용하는 경우 또는 마지막 인자만 람다인 경우에는 두 번째 스타일을 사용해 더 간결하게 만들어 코드의 가독성을 높일 수 있습니다.