Fernando
unread,Jan 7, 2012, 11:05:01 AM1/7/12Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to .Net Architects
Oi Diego
Eu vou te passar a minha visão como desenvolvedor. Eu sei que muitos
arquitetos consideram o MVVM a melhor coisa que existe, porém vou
passar a experiência que tive como desenvolvedor e talvez falar
algumas coisas que ninguém que evangeliza o MVVM conta, embora o
próprio criador do MVVM já tenha deixado claro, que MVVM não é a
solução para todos os projetos e que em muitos casos ele se torna uma
marreta para matar uma formiga.
Trabalho com WPF e trabalhei um tempo numa empresa que usada MVVM de
uma forma quase fundamentalista/radical em um projeto e acabei saindo
dela em parte por causa disto. A impressão que tive com este projeto
foi que ele sofria dos problemas de "overengineering", e acabou se
tornando muito mais complexo do que era realmente necessário por causa
da forma como os conceitos de MVVM foram aplicados. Por conta de se
ficar tentando deixar a aplicação mais fácil de manter, ela se tornou
um inferno de desenvolver, porque a simples criação de uma
funcionalidade que exbisse um texto em label e respondesse ao
pressionar de um botão demandava dezenas de linhas de código. Até hoje
não sei se esta aplicação foi concluída ou entregue no prazo.
Outra dificuldade que esta empresa tinha era em integrar novos
desenvolvedores na equipe. Como o MVVM é muito diferente do
desenvolvimento .NET/Desktop tradicional, demora muito para pegar
alguém vindo da rua e ensinar a pessoa como codificar desta forma.
Muitos dos recém contratados acabavam saindo da empresa pois era mais
fácil arranjar outro job do que passar o stress de ter que aprender um
novo sistema de desenvolvimento e ainda dar performance.
Eu acho que precisa ter uma visão muito pragmática para dosar a
utilização de MVVM e ver até onde ir. Alguns conceitos são bem úteis,
como o Binding, que facilita bastante a lógica de apresentação dos
dados, outros precisam ser contextualizados, como o uso de IComand
para implementar todas as interações com controles do tipo button.
Algumas vezes ficar escrevendo classes de ICommand, Converters,
Triggers e outros "auxiliares" para fazer algo simples pode não
compensar enquanto outras vezes pode valer a pena para funções
simples, então precisa saber quando fazer as coisas da forma
tradicional e quando que compensa utilizar o MVVM.
Nos projetos em que atuo atualmente a gente usa uma forma bem "light"
de MVVM, usando basicamente o Binding como padrão e usando os outros
recursos somente quando o desenvolvimento compensa o que isto pode nos
trazer de economia de tempo ou facilidade de manutenção. São projetos
geralmente com 100K-200K de linha de código cada, para uma grande
empresa do setor financeiro e geralmente conseguimos trabalhar bem
desta forma. Os projetos são entregues antes do período previsto e não
tivemos problemas de manutenção utilizando este sistema. Embora estes
sistemas não use o Prism da Microsoft, ele usa um outro framework
interno da empresa que é muito semelhante ao Prism e traz os mesmos
benefícios, principalmente em modularidade dos componentes.
Bom, esta é minha experiência.
Fernando Bastos