Apakah implementasi MVVM ortodoks tidak ada gunanya? Saya membuat aplikasi baru dan saya mempertimbangkan Formulir Windows dan WPF. Saya memilih WPF karena tahan masa depan dan menawarkan banyak fleksibilitas. Ada lebih sedikit kode dan lebih mudah untuk membuat perubahan signifikan pada UI Anda menggunakan XAML.
Karena pilihan untuk WPF sudah jelas, saya pikir saya sebaiknya menggunakan MVVM sebagai arsitektur aplikasi saya karena menawarkan perpaduan, masalah pemisahan, dan kemampuan pengujian unit. Secara teoritis, ini tampak indah seperti cawan suci pemrograman UI. Petualangan singkat ini; Namun, telah berubah menjadi sakit kepala yang nyata. Seperti yang diharapkan dalam praktik, saya menemukan bahwa saya telah menukar satu masalah dengan masalah lainnya. Saya cenderung menjadi programmer yang obsesif karena saya ingin melakukan hal-hal dengan cara yang benar sehingga saya bisa mendapatkan hasil yang tepat dan mungkin menjadi programmer yang lebih baik. Pola MVVM baru saja gagal dalam pengujian saya tentang produktivitas dan baru saja berubah menjadi peretasan besar yang menjijikkan!
Kasus yang jelas adalah menambahkan dukungan untuk kotak dialog Modal. Cara yang benar adalah dengan memasang kotak dialog dan mengikatnya ke model tampilan. Membuat ini berhasil itu sulit. Untuk memanfaatkan pola MVVM, Anda harus mendistribusikan kode di beberapa tempat di seluruh lapisan aplikasi Anda. Anda juga harus menggunakan konstruksi pemrograman esoterik seperti template dan ekspresi lamba. Hal-hal yang membuat Anda menatap layar sambil menggaruk-garuk kepala. Hal ini membuat pemeliharaan dan debugging menjadi mimpi buruk yang menunggu untuk terjadi seperti yang baru-baru ini saya temukan. Saya memiliki tentang kotak yang berfungsi dengan baik sampai saya mendapat pengecualian untuk kedua kalinya saya memanggilnya, mengatakan bahwa itu tidak dapat menampilkan kotak dialog lagi setelah ditutup. Saya harus menambahkan event handler untuk fungsi tutup ke jendela dialog, satu lagi dalam implementasi IDialogView-nya dan terakhir satu lagi di IDialogViewModel. Saya pikir MVVM akan menyelamatkan kita dari peretasan boros seperti itu!
Ada beberapa orang di luar sana dengan solusi yang bersaing untuk masalah ini dan mereka semua adalah peretasan dan tidak memberikan solusi yang bersih, mudah digunakan kembali, dan elegan. Sebagian besar toolkit MVVM mengabaikan dialog dan ketika mereka mengatasinya, itu hanya kotak peringatan yang tidak memerlukan antarmuka kustom atau model tampilan.
Saya berencana untuk menyerah pada pola tampilan MVVM, setidaknya implementasi ortodoksnya. Bagaimana menurut anda? Apakah itu sepadan dengan masalah Anda jika Anda punya? Apakah saya hanya seorang programmer yang tidak kompeten atau apakah MVVM tidak sesuai dengan keinginannya?