오랜 기간 동안 축소 된 응용 프로그램을 개발하는 대규모 팀의 맥락에서 MVVM의 유용성을 이해합니다. 그러나 내부 LOB 응용 프로그램의 맥락에서 MVVM은 과도한 것처럼 보입니다. 선언적 데이터 바인딩 디버깅, 레이어에서 레이어로 점프, 명령 또는 두 개로 간신히 모델 이상인 VM 추출 등의 오버 헤드를 삼키는데 어려움을 겪고 있습니다. . 그 오버 헤드를 받아들이더라도 대화 상자처럼 MVVM에 구멍이 남습니다. 내가 생각 한 몇 가지 있습니다 :경량 뷰 모델 WPF의 경우
- 모델에 직접 바인딩 및 양식 상호 작용
- 에 대한 구식 이벤트 핸들러는 VM으로 뒤에 효과적으로 코드를 사용하여, 그 자체에 사용자 컨트롤이나 창을 바인딩 할 .
- 내 VM에 관련보기를 참조하는 속성을 포함하십시오.
- View의 ViewModel 하위 클래스를 만듭니다.
위의 항목과 그 조합은 일부 문제를 해결하지만 전부는 아닙니다. 테스트 가능성을 희생시킬 수 있다는 것을 알고 있습니다. 이러한 기술 중 하나 이상을 사용하여 다른 기술 (SOC와 같은 개념적이지 않은) 문제가 실행될 수 있습니까?
당신이 MVVM을 사용하는 경우, 얻을 MVVM이 있음을 유의하십시오 우려와 코드 재사용의 분리 등의 이점이 있지만 주로 실제 뷰와는 별도로 비즈니스 로직을 테스트 할 수 있다는 것입니다. 응용 프로그램의 단위 테스트가 프로젝트에서 중요하다면 MVVM은 좋은 선택이며 관련된 '오버 헤드'에 가치가있을 것입니다. – Oppositional
나는 동의하지 않는다. 뷰 모델에는 비즈니스 로직이 없어야하며 ui와 연결된 로직이 포함됩니다. 우리 사업 논리/모델 계층은 단위 테스트를받습니다. 그러나 일반적인 축소 형 제품이나 상용 제품에 게시하는 데 드는 비용은 내부 LOB 응용 프로그램에 거의 존재하지 않으므로 UI의 단위 테스트에 약간의 유의점이 있습니다. MVVM의 유용성에 대해 궁금해하는 곳이기도합니다. 가장 순수한 형태. –
동의하지 않으면 ViewModels에 UI 로직이 없어야합니다. 포커스 설정이나 애니메이션 실행과 같은 UI 관련 내용은 코드 뒤에 작성해야합니다. ViewModel은 데이터로드/저장과 같은 비즈니스 로직을 포함해야하며 현재 활성 화면 인 ViewModel을 변경하거나 오류 메시지를 반환하는 것과 같은 응용 프로그램 흐름을 제어해야합니다. ViewModel은 응용 프로그램이지만 View는 사용자가 ViewModel과 쉽게 상호 작용할 수있는 예쁜 UI입니다. – Rachel