1. binding은 무엇인가?
코틀린에서의 "binding"은 데이터 바인딩(Data Binding) 기술을 사용할 때 생성되는 바인딩 클래스를 의미합니다. 이 클래스는 XML 레이아웃 파일의 뷰와 해당 뷰에 바인딩된 데이터를 연결해주는 역할을 합니다.
데이터 바인딩은 레이아웃과 코드 간의 결합도를 낮추고, 뷰를 더 쉽게 조작하고 업데이트할 수 있는 기술입니다. 데이터 바인딩을 사용함으로써 다음과 같은 이점을 얻을 수 있습니다.
1-1. binding을 사용했을 때 장점
코드 간결성 : 데이터 바인딩을 사용하게 되면 findViewById() 등의 번거로운 작업을 피하고, 바인딩된 뷰에 직접 접근하여 코드를 보다 간결하게 작성할 수 있게 만들어준다고 한다.
가독성 : 데이터 바인딩을 사용하면 XML 레이아웃 파일에서 뷰와 데이터를 직접 연결할 수 있으므로, 레이아웃 구조와 데이터 바인딩 관련 코드를 한눈에 파악할 수 있게 된다.
타입 안정성 : 바인딩 클래스를 생성하게 되면 컴파일 시간에 XML 레이아웃과 바인딩된 데이터의 타입을 체크할 수 있어게 되어서 타입 안정성이 보장되어 진다고 한다.
효율성 : 데이터 바인딩은 뷰와 데이터 간의 양방향 바인딩을 지원하므로, 데이터의 변경이 자동으로 뷰에 반영되고, 사용자 입력에 다라 데이터가 업데이트될 수가 있다.
1-2. binding을 사용했을 때 단점
학습 곡선 : 데이터 바인딩을 처음 사용하는 경우에는 학습 곡선이 존재할 수 있다. 기존의 뷰 조작 방식과는 다른 개념과 문법을 익혀야 하기 때문이다.
빌드시간 : 데이터 바인딩을 사용하면 바인딩 클래스 생성을 위해 추가적인 빌드 시간이 소요될 수 있지만 일반적으로 큰 문제가 되지는 않는다.
1-3. 그래서?
이러한 이유로 데이터 바인딩은 코틀린에서 뷰와 데이터를 연결하고 관리하는 효율적인 방법으로 사용된다. 코드의 가독성과 유지보수성을 향상시키고, 작성해야 할 코드 양을 줄여 생산성을 높일 수 있기 때문이다.
2. binding 설정
binding 설정은 이와 같이 한다.
build.gradle에서 Module:app으로 되어 있는 곳에서 수정을 해준다.
이 영역 안에만 넣어주면 되는데 편의를 위해서 제일 아래쪽에 넣어주는게 좋다.
사실 binding에 대해서 오늘 정리해야 겠다 마음 먹었던 이유는 여기에 있다.
강의를 듣다보니 손에 익어서 여기는 viewBing {} 열고 내부에 enable = true 넣어주고 sync 만 맞춰주면 끝이군 하고 있었는데
다른 강사님은 다른 방식으로 세팅을 하셨다. 물론 둘 다 세팅하는데 문제는 없다.
사실 얼핏 보면 느낌이 오지 않는가 buildFeatures 속에 다양한 것들이 들어갈것 같다는 느낌...?
2-2. buildFeature과 viewBinding
사실 두 친구 모두 ViewBinding을 활성화하는 방법이다. 그러나 차이점이 꽤나 많다.
buildFeatures의 경우 Android Gradle Plugin (AGP) 4.0 이후에 도입된 새로운 방식이라고 한다. 이 방식은 ViewBinding뿐만 아니라 Data Binding, ShrinkResources 등 다른 기능들을 활성화하는데도 이용이 가능하다고 한다. 쉽게 말하면 이 방식을 이용하게 되면 프로젝트의 모든 모듈에 대해 ViewBinding을 활성화 시킬 수 있다. (기존 방식에서 편의성을 올린 새로운 방식이랄까)
반면 viewBinding은 AGP 3.6 이하 버전에서 사용하던 방식이다. 이 방식은 ViewBinding만 활성화하는데 사용되어 진다. 이 방법을 사용하게 되면 해당 모듈에서만 ViewBinding이 활성화 된다. (대충 예전에는 사용되어 왔지만 이젠 편의성이 떨어져 사용 안하는...?)
쉽게 말하면 AGP 3.6이하 버전은 아마 viewBinding으로 활성화 시켜뒀었을테니 프로젝트에 맞춰서 사용을 하면 되고 그게 아니라면 buildFeature 방식을 사용하는 것이 바람직해 보인다. 이유는 앞서서도 적어두었지만 buildFeature 방식이 좀 더 직관적이고 다양한 기능을 한 곳에서 편리하게 관리할 수 있기 때문이라고 한다.
3. 마치며
안드로이드 스튜디오 + 코틀린을 배우고부터 궁금한게 너무 많아졌다. 기능들이 직관적이라 그런지 내가 무엇을 이용해서 이렇게 했구나라는 것이 눈에 보이니 더 찾아보게 되는 것 같다. 궁금한게 많다보니 정리할 내용이 점점 불어나는데 아직 입문 수준인 지금 벌써 이러면 공부가 끝이 보이질 않을 것 같다는 생각이 들긴한다. 그래도 희망적인 점...? 은 다양한 언어를 짧게나마 사용해보니 이게 이렇게 쓰이지 않을까라는 사고는 조금 되는 것 같다. 내년 3월 말까지 파이팅...
'Language > Kotlin' 카테고리의 다른 글
with 함수 (0) | 2023.12.12 |
---|---|
Kotlin에서 onClick은 왜 사용하지 않을까? (0) | 2023.12.04 |
쓰임 있는 사람이 되기 위해 노력 중입니다.