본문 바로가기

안드로이드

[Android] 소리치는 클린 아키텍처, MVI 그리고 Jetpack Compose

 

컴포넌트를 잘 쌓아서 멋진 소프트웨어를 만들어보자

 

클린 아키텍처 원칙에서, 좋은 아키텍처에서는 유즈케이스가 명확하게 정의되어 있어야 하며, 이를 통해 프로그램이 수행하는 작업이 분명하게 드러나야 한다고 강조합니다. 이는 설계가 '소리치는' 것과 같다고 표현합니다.

 

MVI(Model-View-Intent) 패턴을 활용하면, 화면 구성에서 input과 output이 명확해집니다. 이는 화면에 무엇이 표시되고, 어떤 작업들을 수행하는지(어떤 이벤트를 발생시키는지) 코드가 ‘소리치도록’ 만듭니다.

 

더 나아가, UDF(Unidirectional Data Flow)원칙을 지키며 화면과 컴포넌트를 구성하면, 각 화면의 최상위 컴포넌트(일반적으로 screen level)에서 뷰모델로 주입받은 유즈케이스를 익명 함수로 감싸 각 컴포넌트에 전달할 수 있습니다.

 

그러고보니까, 컴포저블 컴포넌트도 소리칠 수 있습니다. 잘 작성한 컴포저블 컴포넌트는 어떤 일을 할 수 있는지, 어떤 정보를 보여줄 수 있는지를 그 이름과 파라미터에서 잘 드러냅니다. 이런 접근 방식은 재사용 가능한 컴포넌트의 개발을 가능하게 하며, 이는 컴포즈의 핵심 철학에 잘 맞는다고 할 수 있습니다.

 

결론적으로, MVI 패턴은 클린 아키텍처를 실현하는 강력한 도구이고, 컴포즈의 핵심 장점을 잘 활용할 수 있는 패턴이라고 할 수 있습니다.

명확히 드러내기위해 ‘소리친다’는 추상적이고 비유적인 표현을 쓰는것이 조금 우습게 보일지도 모르겠지만, 그래도 명확한 코드를 짜야지! 라던가 무슨 역할을 하는지 잘 드러나느 코드를 짜야지! 라는 표현보다 ‘소리치는 코드를 짜야지!’ 라고 생각하는 쪽이 떠올리기도 좋고, 또 더 와닿는것 같습니다.