공부/이펙티브코틀린

아이템 38 - 연산 또는 액션을 전달할 때는 인터페이스 대신 함수 타입을 사용하라

띵커베르 2024. 8. 1. 22:33
728x90

 

  • SAM: Single-Abstract Method
  • 인터페이스의 단점:
    • 불필요한 복잡성: 인터페이스를 정의하고 이를 구현하는 클래스가 필요합니다.
    • 코드 가독성 저하: 인터페이스와 이를 구현하는 클래스를 찾기 위해 코드 베이스를 여기저기 탐색해야 합니다.
  • 함수 타입의 장점:
    • 간결함: 함수 타입을 사용하면 코드가 더 간결하고 직관적입니다.
    • 가독성 향상: 람다 표현식을 사용하여 코드를 읽기 쉽고 유지보수하기 쉽게 만들 수 있습니다.
    • 유연성: 함수 타입을 사용하면 필요에 따라 더 유연하게 코드를 작성할 수 있습니다.

예시:

  • 인터페이스를 사용한 코드:
interface ButtonClickListener {
    fun onClick()
}

class MyButton : ButtonClickListener {
    override fun onClick() {
        // Do something
    }
}
    • 함수 타입을 사용한 코드:
class MyButton(val onClick: () -> Unit)

val button = MyButton {
    println("버튼이 눌렸습니다.")
}

// 버튼을 누를 때
button.click()

 

 

코틀린이 아닌 다른 언어에서 사용할 클래스를 설계할 때에는 (ex:자바)SAM 을 사용하는 것이 더 좋다. 

 

 

728x90