⏰ 프로젝트 기간 : 2023.06.20 ~ 08.25
😎 출시 : 2023.08.25
<aside> 👉 ConnecCar는 내차판매& 내차구매 등 다양한 기능을 제공하는 중고차 중계 서비스 어플리케이션 입니다. 모든 UI는 Android Jetpack Compose로 개발하고 있습니다.
</aside>
주관적으로 생각하는 Compose 의 가장 큰 장점을 하나만 선택하자면 "직관적" 입니다.
선언형이기 때문에 컴포넌트(Box, Column ...) 의 특성을 이해 한 뒤에 이를 나열하기만 하면 됩니다.
특성을 이해하기 시작하면, 자연스럽게 속도가 오르게 되고, 기존의 방법인 XML 에 선언한 뒤에, id 값을 참조하여 이를 연결하여 처리하는 과정이 없어지기 때문에 코드의 양도 자연스럽게 줄게 됩니다.
저는 이 부분에 대해서 Compose가 굉장히 좋다고 느꼈습니다.
Compose는 CustomView를 만들기 쉽습니다. 기존의 View 시스템은 상속의 구조를 가지고 있어서 CustomView 나 한 부분을 수정하려고 해도 꽤나 까다로운 부분들이 많았습니다. 다양한 메서드들이 상속의 구조속에서 재정의(오버라이드) 되어 있고, 호출 됩니다. View 클래스의 안에 코드라인만 봐도 3만줄이 넘는 코드가 작성되어 있고, 예상한대로 동작하지 않았던 적이 많았습니다. 예시 상황을 하나 들어보겠습니다. CustomView 를 하나 만들었을때, 어느날 디자이너분 백그라운드에 ProgressBar를 넣고 싶다고 이야기 했습니다. 먼저 단순하게 CustomView 클래스 내부에 ProgressBar를 추가해야 합니다. 이를 위해서는 CustomView 클래스의 XML 레이아웃을 수정하고, ProgressBar의 속성 및 동작을 설정해야 합니다. 추가적인 더 작업이 필요하게 있겠지만 Compose는 단순히 ProgressBar 컴포저블 함수와 노출할 시점을 관리할 상태만 추가하면 됩니다.
"단방향 데이터 흐름" . Compose 를 사용하게 되면 State hoisiting을 통해 StateLess(상태를 가지지 않는)한 Composable 함수를 많이 만들게 됩니다. 결과적으로 이벤트를 통해 상태가 업데이트되고 상태가 표시되는 단방향의 데이터 흐름을 가지게 됩니다. 또한 상태를 업데이트 하는 부분이 분리되어 있고, @Preview를 지원하기 때문에, UI 테스트가 굉장히 쉽습니다.
내차 직접 사고팔기 - 커넥카 중고차 필수 앱 - Apps on Google Play
https://www.figma.com/file/kYlhg10ZyZl4BnuDzH6YB3/커넥카?type=design&node-id=0-1&mode=design
GitHub Private Repository : https://github.com/oyunseong/ConnectCar/tree/master