Το MVVMCROSS είναι ένα δημοφιλές πλαίσιο για την ανάπτυξη κινητών πλατφορμών χρησιμοποιώντας Xamarin, επιτρέποντας στους προγραμματιστές να αξιοποιήσουν το μοτίβο MVVM σε όλο το Android, iOS και άλλες πλατφόρμες. Ωστόσο, παρά τα οφέλη της, υπάρχουν αρκετά μειονεκτήματα που πρέπει να εξεταστούν όταν χρησιμοποιείτε MVVMCROSS για εφαρμογές Android και iOS:
1. Καμπύλη πολυπλοκότητας και μάθησης: Το MVVMCROSS είναι ένα μεγάλο πλαίσιο που απαιτεί χρόνο για να κατανοήσετε πλήρως. Οι νέοι προγραμματιστές μπορεί να θεωρούν ότι είναι δύσκολο να κατανοήσουν τα θεμελιώδη στοιχεία του, όπως το πώς μεταφέρονται το πλαίσιο δεδομένων μεταξύ των στοιχείων [1]. Αυτή η πολυπλοκότητα μπορεί να οδηγήσει σε μια πιο απότομη καμπύλη μάθησης σε σύγκριση με τα απλούστερα πλαίσια.
2. Θέματα απόδοσης: Μερικοί χρήστες έχουν αναφέρει προβλήματα απόδοσης, όπως αργούς χρόνους εκκίνησης και καθυστερήσεις στις δεσμεύσεις ListView. Αυτά τα ζητήματα μπορούν να αποδοθούν στην ίδια την πλατφόρμα MVVMCross, Xamarin ή στην ίδια την πλατφόρμα Android, καθιστώντας δύσκολη την εντοπισμό της ακριβούς αιτίας χωρίς προφίλ απόδοσης [1].
3. Μηνύματα σφάλματος και σφαλμάτων: Τα μηνύματα σφάλματος του πλαισίου θα μπορούσαν να είναι πιο ενημερωτικά. Αντί να αναφέρουν απλά σφάλματα, θα μπορούσαν να προτείνουν πιθανές λύσεις, οι οποίες θα βοηθούσαν στην ταχύτερη εντοπισμό σφαλμάτων και ανάπτυξης [1].
4. Επαναφορά και δοκιμαστικότητα: Ενώ το MVVMCross στοχεύει στη βελτίωση της δοκιμασιμότητας διαχωρίζοντας την επιχειρηματική λογική από την προβολή, στην πράξη, τα μοντέλα προβολής μπορούν να γίνουν φουσκωμένα και δύσκολο να δοκιμαστούν. Αυτό ισχύει ιδιαίτερα εάν χειρίζονται πολλαπλές ευθύνες και διατηρούν εσωτερική κατάσταση, καθιστώντας δύσκολο να δοκιμαστούν μεθόδους ανεξάρτητα [2]. Επιπλέον, τα μοντέλα προβολής συχνά καθίστανται μη επαναλαμβανόμενα σε διαφορετικούς ελεγκτές προβολής λόγω των συγκεκριμένων υλοποιήσεων τους [2].
5. Προκλήσεις για συγκεκριμένη πλατφόρμα: Στο Android, ο κατακερματισμός και η στοίβα Java μπορούν να δημιουργήσουν πρόσθετες προκλήσεις. Για παράδειγμα, η χρήση εικόνων Intel Android X86 σε εξομοιωτές μπορεί να οδηγήσει σε ιδιορρυθμίες όπως η υπερβολική καταγραφή ή τα θέματα δικτύου [1]. Στο iOS, η έλλειψη ενσωματωμένων δεσμών μπορεί να περιπλέξει την εφαρμογή MVVM, οδηγώντας σε υπερβολική εξάρτηση από ελεγκτές προβολής ή μοντέλα προβολής για εργασίες που δεν πρέπει να χειριστούν [2].
6. Παρηγορημένη τεκμηρίωση και σεμινάρια: Υπήρξαν ανησυχίες σχετικά με τα ξεπερασμένα μαθήματα και την τεκμηρίωση για το MVVMCROSS. Αυτό μπορεί να δυσχεράνει τους νέους προγραμματιστές να ξεκινήσουν ή να συμβαδίζουν με τις αλλαγές στο πλαίσιο [5].
7. Η μακροζωία και η υποστήριξη: Έχουν αυξηθεί ερωτήσεις σχετικά με την ωριμότητα και τη μακροζωία του πλαισίου, ιδιαίτερα στο πλαίσιο των ταχέως εξελισσόμενων κινητών τεχνολογιών. Αυτό μπορεί να επηρεάσει τις αποφάσεις σχετικά με το εάν θα χρησιμοποιηθεί το MVVMCross για εμπορικά έργα [5].
Συνολικά, ενώ η MVVMCROSS προσφέρει σημαντικά πλεονεκτήματα στην ανάπτυξη μεταξύ των πλατφορμών, η πολυπλοκότητά της, τα θέματα απόδοσης και οι προκλήσεις που σχετίζονται με την πλατφόρμα χρειάζονται προσεκτική εξέταση όταν αποφασίζουν εάν θα το χρησιμοποιήσουν για εφαρμογές Android και iOS.
Αναφορές:[1] https://blog.rthand.com/a-week-of-impressions-of-developing-for-android-using-xamarin-mvvmcross/
[2] https://www.danielhall.io/the-problems-with-mvvm-on-ios
[3] https://www.mvvmcross.com/documentation/upgrading/upgrade-to-mvvmcross-60
[4] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/august/windows-phone-build-mvvm-apps-with-xamarin-and-mvvmcross
[5] https://xamarin21.rssing.com/chan-23562832/article1771.html
[6] https://stackoverflow.com/questions/16301045/mvvmcross-v3-is-that-wrong-to-try-to-use-behaviours-and-storyboards-in--mu
[7] https://www.reddit.com/r/dotnet/comments/1cqqika/worth_converting_net_androidios_to_maui/
[8] https://mentormate.com/blog/6-reasons-mvvmcross-peeds-xamarin-development-personalizes-ux/
[9] https://stackoverflow.com/questions/26108486/should-i-use-mvmcross-for-xamarin-forms-and-windows-store-pp