Community

Composable Architecture를 경험하고

최근 composable architecture를 사용하여 프로젝트를 진행하고 있습니다. 사용하며 느낀 솔직한 후기를 남기고자 합니다! 😀 1. 인체공학적입니다 인체공학은 좋은 자세, 효율성, 편안함을 향상하기 위한 목적을 가진 사람과 작업 환경에 대한 데이터 기반 연구를 말합니다. Composable Architecture를 처음 접할 떄 문서를 보면 인체공학적으로 디자인했다는 표현을 자주 봤었는데, 사용하면 할수록 그 의미를 알아가는 것 같습니다. 예를 들어, SideEffect 객체를 ``@Dependency(\.authenticationClient) varauthenticationClient 이런 식으로 선언하게 되는데 Custom Environment와 똑같이 생성하고 똑같이 선언하기 때문에 @Dependency를 처음 보더라도 굉장히 사용하기 쉽고 효율적이었습니다. 완전히 새로운 아키텍처이지만 iOS개발자에게 이미 너무 편안하고 효율적인 기능을 제공해주고 있습니다. 2. 진짜 진짜 테스트 코드를 작성하기 좋습니다 우리는 iOS개발할 때 아키텍처 선택 시 테스트 용이성에 대해서 많이 고려합니다. 테스트 코드를 작성하기 좋은 아키텍처들이 있더라도 제품 코드를 작성하는 것과 테스트 코드를 작성하는 것은 다른 영역이라고 생각이 들 때가 있을 정도로 사용자 입장에서의 동작을 검증하고 버그를 드러내는 것이 쉽지는 않습니다. 또한 테스트하기에 좋은 코드를 짜는 것 역시나 쉽지 않습니다. Composable Architecture에서는 Feature Domain을 View에서 사용할 때 Store라는 객체를 만들어서 사용해야 합니다. Store를 테스트할 때 사용하기 편하라고 TestStore를 만들어 놓았기 때문에 테스트 코드로 이어지는 과정이 너무 자연스러웠습니다. 또한 Side Effect를 사용할 때 liveValue와 testValue 두 개를 만들어서 사용하게 유도하기 때문에 이런 부분 또한 객체를 테스트하기에 너무 좋은 아키텍처라고 생각합니다. 3. UI 프레임워크에 전혀 영향을 받지 않는다 이직하면서. SwiftUI를 본격적으로 사용하게 됐습니다. SwiftUI를 사용하면서 느낀 건 SwiftUI에 맞는 아키텍처가 필요하고 여러 개의 후보가 있었습니다. 그중에서 선택한 아키텍처가 Composable Architecture였는데 사용하다 보면서 느낀 점은 SwiftUI / UIKit 뭘 사용하든 굉장히 사용하기 편한 아키텍처라는 점입니다. 물론 SwiftUI에 좀 더 특화된 아키텍처라고 생각이 되긴 하지만요…ㅎㅎ 4. 모듈화가 용이합니다. Composable Architecture를 사용할 때 필수적으로 따라오는 키워드는 “모듈화”입니다. SPM이나 Tuist와 같은 모듈화에 특화된 툴을 사용하여 모듈화를 했을 때 더 빛을 발하는 아키텍처인데요, 모듈화를 신경 쓰지 않으면 뭔가 허전하고 완성되지 않은 느낌을 받는 아키텍처라 이왕 사용하는 거 모듈화를 했을 때 훨씬 더 사용성이 좋았습니다. 5. 자연스럽게 OOP를 하게 된다 객체 지향은 뭔가 기본이자 기술, 때로는 필살기 같이 느껴질 때가 있는 친구입니다. 역할에 맞는 책임을 부여하고 객체 간의 협력을 통해서 기능을 만들어 나가는 과정은 Composable Architecture에서 Feature Domain을 만들어가는 과정에 자연스럽게 녹아 있습니다. 철저하게 도메인을 분석하고 역할을 나눈 후에 역할에 맞는 책임을 감당해야 객체 간 협력이 잘 이뤄져 사용자가 원하는 동작이 일어나게 됩니다. OOP를 코드에 적용하는 게 어려운 부분이 있다면 자연스럽게 OOP를 녹여보는 재미를 느껴보는 것도 좋을 거 같습니다.!

알림

알림이 없습니다