O MVVMcross é uma estrutura popular para o desenvolvimento móvel de plataforma cruzada usando Xamarin, permitindo que os desenvolvedores alavancem o padrão MVVM no Android, iOS e outras plataformas. No entanto, apesar de seus benefícios, há várias desvantagens a serem consideradas ao usar o MVVMCROSS para aplicativos Android e iOS:
1. Complexidade e curva de aprendizado: MVVMcross é uma grande estrutura que requer tempo para entender completamente. Novos desenvolvedores podem achar desafiador entender seus fundamentos, como como o contexto de dados é transferido entre os componentes [1]. Essa complexidade pode levar a uma curva de aprendizado mais acentuada em comparação com estruturas mais simples.
2. Problemas de desempenho: Alguns usuários relataram problemas de desempenho, como tempos de inicialização lenta e atrasos nas ligações da ListView. Esses problemas podem ser atribuídos a MVVMcross, Xamarin ou a própria plataforma Android, dificultando a identificação da causa exata sem um perfil de desempenho [1].
3. Mensagens de erro e depuração: as mensagens de erro da estrutura podem ser mais informativas. Em vez de apenas relatar erros, eles poderiam sugerir soluções em potencial, o que ajudaria a depuração e desenvolvimento mais rápidos [1].
4. Reutabilidade e testabilidade: Enquanto o MVVMcross visa melhorar a testabilidade, separando a lógica de negócios da visualização, na prática, os modelos de visualização podem ficar inchados e difíceis de testar. Isso é particularmente verdadeiro se eles lidarem com várias responsabilidades e manter o estado interno, dificultando o teste de métodos de forma independente [2]. Além disso, os modelos de visualização geralmente se tornam não reutilizados em diferentes controladores de visão devido às suas implementações específicas [2].
5. Desafios específicos da plataforma: no Android, a fragmentação e a pilha Java podem apresentar desafios adicionais. Por exemplo, o uso de imagens Intel Android X86 em emuladores pode levar a peculiaridades como logs excessivos ou problemas de rede [1]. No iOS, a falta de ligações internas pode complicar a implementação do MVVM, levando a excesso de confiança nos controladores de exibição ou visualizar modelos para tarefas que eles não devem lidar com [2].
6. Documentação e tutoriais desatualizados: Houve preocupações sobre tutoriais e documentação desatualizados para MVVMcross. Isso pode dificultar a partida dos novos desenvolvedores ou acompanhar as alterações na estrutura [5].
7. Longevidade e apoio: perguntas sobre a maturidade e a longevidade da estrutura foram levantadas, particularmente no contexto de tecnologias móveis em rápida evolução. Isso pode afetar as decisões sobre o uso de MVVMcross para projetos comerciais [5].
No geral, enquanto a MVVMcross oferece vantagens significativas no desenvolvimento de plataformas cruzadas, sua complexidade, problemas de desempenho e desafios específicos da plataforma precisam de consideração cuidadosa ao decidir se deve usá-lo para aplicativos Android e iOS.
Citações:[1] https://blog.rthand.com/a-week-of-impressions-of-develo-for-android-using-xamarin-mvvmcross/
[2] https://www.danielhall.io/the-problems-with-mvvm-on-ios
[3] https://www.mvvmcross.com/documentation/upgrining/upgrade-to-mvvmcross-60
[4] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/august/windows-phone-build-mvvm-apps-with-xamarin-and-mvmcross
[5] https://xamarin21.rssing.com/chan-23562832/article1771.html
[6] https://stackoverflow.com/questions/16301045/mvvmcross-v3-is-athat-wrong to-try-to-use-behaviours-and-storyboards-in-a-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-app