MVVM 아키텍처 패턴을 사용할 때 코드의 의존관계를 엄격하게 제한함으로써 구성요소의 잘못된 설계 위험을 줄일 수 있다.

structuring-projects-for-mvvm-application

 

  • 모델(Model), 뷰모델(ViewModel), 뷰(View)를 물리적으로 구분된 프로젝트에 분산시켜라.
  • 프로젝트 순환 참조를 금지하라.
  • 뷰모델 프로젝트가 모델 프로젝트를 참조하게 하라.
  • 뷰 프로젝트가 뷰모델 프로젝트를 참조하게 하라.
  • 뷰모델 프로젝트가 UI 프레임워크를 참조하지 않게 하라.
  • 의존성 역전 원리(Dependency Inversion Principle)를 필요한 곳에 필요한 만큼만 절제해 사용하라. 이 때 반드시 인터페이스 분리 원리(Interface Segregation Principle)를 함께 고려하라.

이 규칙들은 당신의 모델, 뷰모델, 뷰의 관심사가 뒤엉켜버리는 것을 상당 부분 막아줄 것이다. 만약 MVVM 패턴을 사용한 이미 존재하는 코드를 이 구조로 재편하는 것에 걸림돌이 많다면 당신의 코드는 나쁜 설계를 가지고 있을 가능성이 크다.

하지만 이것은 어디까지나 최소한의 구조적 장치일 뿐 프로그래머의 무지함을 원천적으로 차단해 줄 도구는 아직 없다.