Việc triển khai MVVM chính thống có vô nghĩa không? Tôi đang tạo một ứng dụng mới và tôi đã xem xét Windows Forms và WPF. Tôi đã chọn WPF vì nó phù hợp với tương lai và cung cấp nhiều tính linh hoạt. Có ít mã hơn và dễ dàng thực hiện các thay đổi quan trọng đối với giao diện người dùng của bạn bằng cách sử dụng XAML.
Vì sự lựa chọn cho WPF là hiển nhiên, tôi nghĩ rằng tôi cũng có thể sử dụng MVVM làm kiến trúc ứng dụng của mình vì nó cung cấp khả năng hòa trộn, các mối quan tâm về phân tách và khả năng kiểm tra đơn vị. Về mặt lý thuyết, nó có vẻ đẹp giống như chén thánh của lập trình UI. Cuộc phiêu lưu ngắn ngủi này; tuy nhiên, đã trở thành một cơn đau đầu thực sự. Như mong đợi trong thực tế, tôi thấy rằng tôi đã đánh đổi một vấn đề này cho một vấn đề khác. Tôi có xu hướng trở thành một lập trình viên ám ảnh vì tôi muốn làm mọi thứ theo đúng cách để có thể đạt được kết quả phù hợp và có thể trở thành một lập trình viên giỏi hơn. Mô hình MVVM vừa làm thất bại bài kiểm tra của tôi về năng suất và vừa trở thành một vụ hack lớn của yucky!
Trường hợp rõ ràng ở điểm là thêm hỗ trợ cho hộp thoại Phương thức. Cách đúng là tạo một hộp thoại và gắn nó vào một mô hình khung nhìn. Làm cho điều này làm việc là khó khăn. Để hưởng lợi từ mẫu MVVM, bạn phải phân phối mã ở nhiều nơi trong suốt các lớp của ứng dụng của mình. Bạn cũng phải sử dụng các cấu trúc lập trình bí truyền như các mẫu và biểu thức lamba. Thứ khiến bạn cứ nhìn chằm chằm vào màn hình mà vò đầu bứt tai. Điều này làm cho việc bảo trì và gỡ lỗi trở thành cơn ác mộng chờ đợi xảy ra như tôi đã phát hiện gần đây. Tôi đã có một hộp giới thiệu hoạt động tốt cho đến khi tôi nhận được một ngoại lệ vào lần thứ hai tôi gọi nó, nói rằng nó không thể hiển thị lại hộp thoại sau khi nó bị đóng. Tôi đã phải thêm một trình xử lý sự kiện cho chức năng đóng vào cửa sổ hộp thoại, một cái khác trong triển khai IDialogView của nó và cuối cùng là một cái khác trong IDialogViewModel. Tôi đã nghĩ MVVM sẽ cứu chúng ta khỏi những vụ hack ngông cuồng như vậy!
Có một số người có các giải pháp cạnh tranh cho vấn đề này và tất cả đều là hack và không cung cấp một giải pháp thanh lịch, sạch sẽ, có thể tái sử dụng dễ dàng. Hầu hết các bộ công cụ MVVM phủ bóng trên các hộp thoại và khi chúng giải quyết chúng, chúng chỉ là các hộp cảnh báo không yêu cầu giao diện tùy chỉnh hoặc mô hình xem.
Tôi đang có ý định từ bỏ kiểu xem MVVM, ít nhất là cách triển khai chính thống của nó. Bạn nghĩ sao? Nó có đáng để bạn gặp rắc rối không? Tôi chỉ là một lập trình viên kém năng lực hay MVVM không phải là thứ mà nó được thổi phồng lên?