Open hamfan524 opened 9 months ago
클린 아키텍처는 분리도, 테스트 용이성, 비즈니스 로직 중심성 등에서 강점을 가지며, 복잡한 iOS 애플리케이션에서 이러한 요소들이 중요할 때 효과적인 선택입니다. 그러나 간단한 애플리케이션의 경우 MVC, MVP, MVVM에 비해 더 복잡하고 오버헤드가 클 수 있습니다. 프로젝트의 특정 요구사항과 규모, 그리고 팀의 아키텍처에 대한 이해도에 따라 선택이 달라질 수 있습니다.
좋은 글 잘 읽었습니다 언제 한번 꼭 다뤄볼 주제라고 생각했기에 개인적으로 찾아봤는데요, 궁금한게 있습니다
MVVM은 MVC, MVP의 각각의 컨트롤러, 프레젠터가 감당할 수 없을 만큼 비대해져서 이걸 어떻게 해결할까 고민하다가 나온 패러다임중 하나라고 생각합니다
그러면 MVVM의 뷰모델이 너무 비대해져서 감당할 수 없을만큼의 코드량이 쌓이면 그 때는 어떤 아키텍쳐를 고민해야하는지 궁금합니다
MVC -> MVP -> MVVM -> 클린아키텍쳐 순서별로 단점을 보완하고 심화되는 단계라 생각해도되나요?
좋은 글 잘 읽었습니다 언제 한번 꼭 다뤄볼 주제라고 생각했기에 개인적으로 찾아봤는데요, 궁금한게 있습니다
MVVM은 MVC, MVP의 각각의 컨트롤러, 프레젠터가 감당할 수 없을 만큼 비대해져서 이걸 어떻게 해결할까 고민하다가 나온 패러다임중 하나라고 생각합니다
그러면 MVVM의 뷰모델이 너무 비대해져서 감당할 수 없을만큼의 코드량이 쌓이면 그 때는 어떤 아키텍쳐를 고민해야하는지 궁금합니다
ViewModel이 너무 많은 작업을 수행하는 경우 이를 여러 ViewModel로 분할해야 할 때일 수 있습니다. 각 ViewModel은 단일 책임을 갖고 UI의 일부만 관리해야 합니다. 이 접근 방식은 객체 지향 프로그래밍에서 큰 클래스를 분할하는 것과 유사합니다.
또는 코디네이터 패턴을 적용하는 방법도 있습니다. 코디네이터 패턴은 ViewModel과 별도로 탐색 및 애플리케이션 흐름을 관리하는 데 도움이 될 수 있습니다. 코디네이터는 복잡한 탐색 논리와 같이 ViewModel에 빽빽이 들어차 있을 수 있는 일부 책임을 맡을 수 있습니다.
하지만 SwiftUI는 선언적, 상태(State) 중심의 프레임워크이기 때문에 각 아키텍처의 표준 구현은 SwiftUI 앱에 적합하지 않습니다.
Clean Architecture, Viper 또는 패턴 조합과 같은 다른 패턴을 고려해보는게 좋습니다. 예를 들어 클린 아키텍처는 문제를 별개의 레이어로 분리하는 것을 강조하여 복잡성을 더 잘 관리하는 데 도움이 될 수 있습니다.
MVC -> MVP -> MVVM -> 클린아키텍쳐 순서별로 단점을 보완하고 심화되는 단계라 생각해도되나요?
맞습니다. 이들은 각각의 단점을 보완하고, 특정한 문제들을 해결하기 위해 개발되었으며, 일정한 방식으로 진화해왔다고 볼 수 있습니다.
단점: 뷰와 모델이 강하게 연결되어 있어, UI와 비즈니스 로직의 분리가 쉽지 않습니다. 컨트롤러가 모델과 뷰 사이의 의존성으로 인해 복잡해질 수 있습니다. 보완점: MVP와 MVVM은 이러한 단점을 개선하기 위해 등장했습니다.
단점: 프레젠터가 뷰와 모델 사이에서 중개하는 역할을 하기 때문에, 프레젠터가 복잡해질 수 있습니다. 또한, 뷰와 프레젠터 간의 강한 결합이 문제가 될 수 있습니다. 보완점: MVVM은 이러한 결합을 느슨하게 하고, 데이터 바인딩을 통해 뷰의 로직을 줄이는 방향으로 발전했습니다.
단점: 복잡한 데이터 바인딩으로 인해 디버깅이 어려울 수 있습니다. 또한, 큰 프로젝트에서 ViewModel이 과도하게 복잡해질 수 있습니다. 보완점: 클린 아키텍처는 이러한 복잡성을 줄이고, 더 명확한 분리를 통해 유지 보수성을 향상시키려는 목적을 가지고 있습니다.
특징: 각 계층의 명확한 분리를 통해 시스템의 유연성과 유지 보수성을 높입니다. 이는 MVVM과 같은 패턴을 포함하여 다양한 아키텍처와 결합될 수 있습니다. 보완점: 클린 아키텍처는 특정 아키텍처의 단점을 보완하기보다는, 소프트웨어 설계의 근본적인 원칙에 중점을 두고 있습니다.
종합적으로, 이러한 패턴들은 서로의 단점을 보완하며 발전해왔으며, 각각의 패턴은 특정한 상황과 요구 사항에 맞춰 선택되어 사용됩니다.
MVC, MVP, MVVM 등 다른 아키텍처 패턴과 Clean Architecture를 비교했을 때, iOS 개발에 있어서 Clean Architecture의 독특한 장점은 무엇이라고 생각하시나요?