PRISM/MVVM/WPF 응용 프로그램을 작성하고 있습니다. LOB 응용 프로그램이므로 복잡한 규칙이 많이 있습니다. 보기 모델이 부풀어 오르기 시작했다는 것을 알았습니다. 두 가지 주요 쟁점이 있습니다.리팩터링 Bloated ViewModel
하나는 MVVM을 유지하는 것입니다. VM VM에 여러 속성을 추가하는 것과 같은 많은 일을하고 있습니다. 뷰는 이러한 속성에 바인딩되어 특정 정보를 보는 것과 같은 느낌을 추적합니다. 예를 들어, VM에서 장시간 실행중인 프로세스의 상태를 추적하는 부울 (Boolean)은 장시간 실행되는 프로세스가 작동하는 동안 뷰에서 일부 컨트롤을 비활성화 할 수 있습니다. 이 문제는 첨부 된 동작으로 해결할 수 있다고 읽었습니다. 나는 더 자세히 살펴볼 것입니다. 온라인에서 볼 수있는 MVVM 애플리케이션의 예에서는 과도하게 단순화 되었기 때문에 큰 문제는 아닙니다.
다른 문제는 내 VM의 명령 수입니다. 바로 지금 네 가지 명령이 있습니다. Josh Smith의 RelayCommand (기본적으로 PRISM에서는 DelegateCommand)를 사용하여 VM의 명령을 정의하므로 모든 비즈니스 로직이 VM에 존재합니다. 각 명령을 별도의 작업 단위로 이동하는 것을 고려했습니다. 이 작업을 수행하는 가장 좋은 방법은 확실하지 않습니다.
VM을 깨끗하게 유지하기 위해 어떤 패턴을 사용하고 있습니까? 나는 이미 "당신의 견해와 VM이 너무 복잡해서 많은 뷰/VM으로 깨뜨려야 만합니다"라고 응답 할 수 있습니다. Ux 관점에서 볼 때 너무 복잡하지는 않습니다. 두 개의 버튼, 콤보 박스 및 목록 상자가 있습니다. 또한, 논리적 인 관점에서, 그것은 하나의 응집 된 영역입니다. 그런 말로, 나는 다른 사람들이 이런 유형의 문제를 어떻게 다루고 있는지에 대해 매우 관심이있다.
입력 해 주셔서 감사합니다.
어리석은 논평, 그러나 나는 저항 할 수 없다 : "무엇이 잘못 되었습니까?" 그것은 삶의 방식, 소프트웨어 개발의 한 방법입니다 ;-) –
큰 질문입니다. 내 WPF 뷰 모델은 MVVM을 제대로 할 때 WPF의 한계를 극복하기 위해 해킹으로 가득 차 있습니다. 이 중 대부분은 WinForms MVP 앱에서 사소한 것입니다. – Damien
MVPVM을 체크 아웃 할 수 있습니다. 기본적으로 VM을 분할하여 VM이 데이터 바인딩 만 처리하고 Presenter가 명령을 처리합니다. 나는 명령 바인딩의 편리 성을 어떻게 잃어 버리는 지 맘에 들지 않지만 깨끗한 VM을 위해 만들어 준다. – bygrace