Tecnologia

MVVM não é tudo isso.

Por: , novembro 28, 2017

O MVVM ou Model-View-ViewModel tem sido bastante utilizado no desenvolvimento de aplicativos para iOS, mas será que é uma boa arquitetura? Um artigo chamado MVVM is Not Very Good de Soroush Khanlou apresenta algumas problemáticas dessa arquitetura que tem sido bastante utilizada e comentada em artigos.

Como vimos no artigo – Qual a melhor arquitetura mobile?, o MVVM quando inserido no desenvolvimento para aplicativos iOS possui a estrutura:
1_ERIt6oXEmm00ozFwZKECbA@2x
Khanlou apresenta de forma detalhada alguns problemas quando aplicamos o MVVM no desenvolvimento para iOS e conceitos mais gerais.
Nomenclatura
Quando analisado em relação a nomenclatura, Khanlou questiona o significado do termo ViewModel. Por ser um nome muito abstrato, ele refere-se a dois patternsView Model. A primeira impressão, trata-se de um objeto “burro”, que será utilizado pela View para popular seus elementos de UI. Não possuiria nenhuma lógica ou métodos.
Responsabilidades
O MVVM não deixa claro qual responsabilidade deve possuir na camada ViewModel. Se compararmos o problema que temos com o MVC em relação a distribuição de responsabilidades, chegaremos em um cenário do tipo:

MVVM Massive ViewModel
MVVM Massive ViewModel

Muita coisa pode ser feita nessa camada, como: requisições, lógica de apresentação, validações… Khanlou apresenta uma série de artigos em que cada um atribui responsabilidades diferentes para a ViewModel.
Estrutura
Por último, Khanlou comenta que quando comparado o MVVM com MVC em termos estruturais, não existem diferenças:
MVC
MVC

MVVM
MVVM

Fonte das imagens: Objc.io
Devido ao “problema” da View ser subclasse da Controller no CocoaViewModel no MVVM passa a ser o objeto próprio como deveria ser a View Controller no MVC.
Conclusão
Khanlou levanta vários pontos importantes sobre a arquitetura MVVM o que nos faz refletir, principalmente sobre o aspecto de responsabilidade na camada ViewModel. O time precisa tá muito bem alinhado quanto a esse aspecto, para que consiga construir uma arquitetura consistente.
Referências
http://khanlou.com/2015/12/mvvm-is-not-very-good/

  • Receba nosso conteúdo em primeira mão.