การใช้ MVVM แบบดั้งเดิมนั้นไม่มีจุดหมายหรือไม่? ฉันกำลังสร้างแอปพลิเคชันใหม่และฉันพิจารณา Windows Forms และ WPF ฉันเลือก WPF เพราะเป็นหลักฐานในอนาคตและมีความยืดหยุ่นมากมาย มีโค้ดน้อยลงและทำการเปลี่ยนแปลงที่สำคัญกับ UI ของคุณได้ง่ายขึ้นโดยใช้ XAML
เนื่องจากตัวเลือกสำหรับ WPF นั้นชัดเจนฉันจึงคิดว่าฉันสามารถไปได้ทุกทางโดยใช้ MVVM เป็นสถาปัตยกรรมแอปพลิเคชันของฉันเนื่องจากมีความสามารถในการผสมผสานความกังวลในการแยกและการทดสอบหน่วย ในทางทฤษฎีดูเหมือนว่าจะสวยงามเหมือนจอกศักดิ์สิทธิ์ของการเขียนโปรแกรม UI การผจญภัยสั้น ๆ นี้ อย่างไรก็ตามได้กลายเป็นอาการปวดหัวอย่างแท้จริง ตามที่คาดไว้ในทางปฏิบัติฉันพบว่าฉันได้แลกเปลี่ยนปัญหาหนึ่งสำหรับอีกปัญหาหนึ่ง ฉันมักจะเป็นโปรแกรมเมอร์ที่หมกมุ่นอยู่กับการที่ฉันต้องการทำสิ่งต่างๆให้ถูกต้องเพื่อที่ฉันจะได้ผลลัพธ์ที่ถูกต้องและอาจจะกลายเป็นโปรแกรมเมอร์ที่เก่งขึ้น รูปแบบ MVVM ทำให้การทดสอบประสิทธิภาพการทำงานของฉันล้มเหลวและเพิ่งกลายเป็นการแฮ็กที่ยิ่งใหญ่!
กรณีที่ชัดเจนคือการเพิ่มการสนับสนุนสำหรับกล่องโต้ตอบ Modal วิธีที่ถูกต้องคือวางกล่องโต้ตอบและผูกเข้ากับโมเดลมุมมอง การทำงานนี้เป็นเรื่องยาก เพื่อให้ได้รับประโยชน์จากรูปแบบ MVVM คุณต้องแจกจ่ายโค้ดในหลาย ๆ ที่ตลอดทั้งเลเยอร์ของแอปพลิเคชันของคุณ คุณยังต้องใช้โครงสร้างการเขียนโปรแกรมที่ลึกลับเช่นเทมเพลตและนิพจน์ lamba สิ่งที่ทำให้คุณจ้องหน้าจอเกาหัว สิ่งนี้ทำให้การบำรุงรักษาและการแก้จุดบกพร่องเป็นฝันร้ายที่รอให้เกิดขึ้นเมื่อฉันเพิ่งค้นพบ ฉันมีกล่องโต้ตอบเกี่ยวกับการทำงานที่ดีจนกระทั่งฉันได้รับข้อยกเว้นในครั้งที่สองที่ฉันเรียกมันโดยบอกว่ามันไม่สามารถแสดงกล่องโต้ตอบได้อีกเมื่อปิดแล้ว ฉันต้องเพิ่มตัวจัดการเหตุการณ์สำหรับฟังก์ชันปิดหน้าต่างโต้ตอบ อีกอันหนึ่งในการใช้งาน IDialogView และสุดท้ายอีกอันใน IDialogViewModel ฉันคิดว่า MVVM จะช่วยเราจากการแฮ็กเกอร์ที่ฟุ่มเฟือยเช่นนี้!
มีหลายคนที่มีวิธีแก้ปัญหาที่แข่งขันกันสำหรับปัญหานี้และพวกเขาทั้งหมดเป็นแฮ็กและไม่ได้ให้โซลูชันที่สวยงามและใช้ซ้ำได้ง่าย ชุดเครื่องมือ MVVM ส่วนใหญ่ปัดสวะกล่องโต้ตอบและเมื่อพวกเขาจัดการกับพวกเขาพวกเขาเป็นเพียงกล่องแจ้งเตือนที่ไม่ต้องใช้อินเทอร์เฟซที่กำหนดเองหรือดูโมเดล
ฉันกำลังวางแผนที่จะเลิกใช้รูปแบบการดู MVVM อย่างน้อยก็มีการใช้งานแบบดั้งเดิมของมัน คุณคิดอย่างไร? มันคุ้มค่ากับปัญหาสำหรับคุณหรือไม่ถ้าคุณมี? ฉันเป็นแค่โปรแกรมเมอร์ที่ไร้ความสามารถหรือ MVVM ไม่ใช่สิ่งที่ควรจะเป็น?