공부/이펙티브코틀린
아이템 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