1. onClick
자바와 자바스크립트에서 밥 먹듯이 사용하던 onClick을 코틀린을 배우다보니 안드로이드 스튜디오에서는 권장하지 않는다고 하여 다음과 같이 줄이 그어져 있다.(현재 사용되지 않는다...? 로 봐도 무방할듯 싶다.)
안드로이드 스튜디오에서는 클릭 버튼을 사용할 때 보통 setOnclickListener라는 함수를 사용한다고 한다. 이유가 무엇일까?
1-1. onClickListener를 권장하지 않는 이유
람다 표현식 : 코틀린에서는 람다 표현식을 사용하여 더 간결하고 직관적인 코드를 작성할 수 있다. 이로 인해, 기존의 OnClickListener 방식은 코드가 길어지고 복잡해질 수 있어 권장하지 않는 편이라고 한다.
Null 안정성 : 코틀린은 null 안정성을 중요하게 생각합니다. 따라서, OnClickListener를 사용하면 null을 처리하는 코드가 추가로 필요할 수 있지만 코틀린의 람다 표현식을 사용하면 이러한 문제를 피할 수 있다.
스코프 함수 : 코틀린은 스코프 함수(let, run, with, apply, also)를 제공하여 코드의 가독성을 향상시키고 오류를 줄일 수 있습니다. 이를 통해 뷰에 대한 참조를 쉽게 관리할 수 있으며, 이는 OnClickListener를 사용하는 것보다 훨씬 깔끔하고 안전한 방법이라고 한다.
따라서, 이러한 이유로 코틀린에서는 기존의 OnClickListener 방식을 권장하지 않고, 대신 람다 표현식이나 스코프 함수 등을 사용하여 이벤트를 처리하는 것을 권장한다고 한다.
2. setOnclickListener
setOnClickListener는 안드로이드에서 사용하는 이벤트 리스너 중 하나로, 특정 뷰 (예: 버튼)에 클릭 이벤트를 처리할 수 있는 메서드입니다. setOnClickListener 메서드는 뷰를 클릭했을 때 실행할 코드 블럭을 설정하는데 사용됩니다. 이 메서드를 사용하려면 OnClickListener 인터페이스를 구현해야 합니다.
예를 들어, 코틀린에서 버튼에 클릭 리스너를 설정하려면 다음과 같이 작성할 수 있습니다:
button.setOnClickListener { // 버튼이 클릭되었을 때 실행할 코드 }
위의 코드에서는 람다 표현식을 사용하여 OnClickListener를 설정하였습니다. 버튼이 클릭되면 괄호 안에 있는 코드가 실행됩니다. 이렇게 setOnClickListener를 사용하면 사용자의 클릭 이벤트에 대응하는 동작을 쉽게 정의할 수 있습니다.
Null Safety 지원 : 코틀린은 Null Safety 기능을 제공하여 null 참조로 인한 예기치 않은 NullPointerException을 방지할 수 있다. setOnClickListener를 사용하면 람다식을 통해 직접 이벤트 처리를 할 수 있으며, 이를 통해 null 참조로 인한 예외 발생 가능성을 줄일 수 있다.
람다식 사용 : setOnClickListener를 사용하면 람다식을 통해 간결하고 가독성 좋은 이벤트 처리 코드를 작성할 수 있지만 onClick을 사용할 경우에는 익명 내부 클래스를 생성하고 메서드를 오버라이드해야 하는 번거로움이 있다.
함수 타입 활용 : 코틀린은 함수 타입을 지원하므로, setOnClickListener를 사용하여 함수를 직접 전달할 수 있다. 이를 통해 코드의 재사용성과 모듈화를 높일 수 있다.
Inline 함수 적용 : 코틀린은 setOnClickListener에 대한 인라인(inline) 함수를 제공하고, 인라인 함수를 사용하면 람다식을 호출하는 부분에서 함수 호출 오버헤드를 줄일 수 있다.
2-1. setOnclickListener와 onClickListener
람다 표현식: 코틀린에서는 람다 표현식을 사용하여 더 간결하고 직관적인 코드를 작성할 수 있습니다. 이로 인해, 기존의 OnClickListener 방식은 코드가 길어지고 복잡해질 수 있어 권장하지 않는 편입니다.
Null 안정성: 코틀린은 null 안정성을 중요하게 생각합니다. 따라서, OnClickListener를 사용하면 null을 처리하는 코드가 추가로 필요할 수 있습니다. 하지만 코틀린의 람다 표현식을 사용하면 이러한 문제를 피할 수 있습니다.
스코프 함수: 코틀린은 스코프 함수(let, run, with, apply, also)를 제공하여 코드의 가독성을 향상시키고 오류를 줄일 수 있습니다. 이를 통해 뷰에 대한 참조를 쉽게 관리할 수 있으며, 이는 OnClickListener를 사용하는 것보다 훨씬 깔끔하고 안전한 방법입니다.
따라서, 이러한 이유로 코틀린에서는 기존의 OnClickListener 방식을 권장하지 않고, 대신 람다 표현식이나 스코프 함수 등을 사용하여 이벤트를 처리하는 것을 권장하는 편이라고 한다.
3. 새롭게 알게 된 점
함수들의 특징을 명확하게 알고 있어야만 최적화와 오류 발생을 줄일 수 있다는 생각이 들었고, 기존에 알고 있던 것들이 이것을 사용하면 이렇게 돼 였다면 이제는 이런 경우에는 함수의 특성과 장단점을 모두 숙지하고 있어야 한다는 느낌을 강하게 받았다.
'Language > Kotlin' 카테고리의 다른 글
with 함수 (0) | 2023.12.12 |
---|---|
binding을 쓰는 이유 (1) | 2023.12.05 |
쓰임 있는 사람이 되기 위해 노력 중입니다.