Artigo no estilo: Curso

Do que trata o artigo

Neste artigo será dada continuação a exposição dos designs patterns mais comuns na plataforma .NET. Desta vez será tratado o uso do MVVM (Model View ViewModel) que é utilizado em projetos baseados no WPF (Windows Presentation Foundation). As aplicações desenvolvidas com esta tecnologia destinam-se tanto para aplicações desktop, web (Silverlight) e para celulares (Windows Phone). Além de abordar os principais aspectos deste design pattern, também será feita uma comparação com outro padrão, o MVP (que foi abordado na primeira parte deste artigo).

Para que serve

Os designs patterns ajudam os desenvolvedores a manterem um padrão de qualidade em suas criações, tornando o processo de criação mais regular e organizado. O foco do padrão MVVM é a separação completa da regra de negócio da camada de apresentação. Quando aplicado corretamente, nenhum código, além do padrão gerado pelo Visual Studio (que serão vistos nos próximos tópicos) será encontrado dentro do code behind das janelas do projeto.

Model View ViewModel

Dentre os designs patterns que estão à disposição dos desenvolvedores da plataforma .NET, o que tem recebido mais destaque é o MVVM. O objetivo do mesmo é separar a camada de apresentação da camada de regras de negócios. Assim como o MVP e MVC, incorpora práticas e padrões para o desenvolvimento do projeto visando atingir um objetivo específico. Uma das grandes vantagens deste padrão é abolir completamente o código escrito em C# nas classes responsáveis pela apresentação.

Este padrão está intimamente ligado com a linguagem XAML que foi introduzida no framework .NET para compor a interface de aplicações WPF, Silverlight e recentemente Windows Phone. Esta proximidade acontece principalmente pela flexibilidade desta linguagem de marcação - permite definir interfaces ricas para o usuário, evitando que você tenha que utilizar muito código em C#.

No primeiro artigo desta série procuramos colocar uma justificativa sobre a necessidade de utilizar design patterns na criação de aplicações. Esta necessidade baseia-se nos dias atuais, já que anteriormente não havia, principalmente por existirem linguagens como o Object Pascal e o Visual Basic. Essas começaram a despontar com o surgimento de IDE´s como o Delphi e o Visual Studio, que aceleravam o processo de desenvolvimento.

O que ninguém esperava era a explosão das plataformas de computação como aconteceu com a Internet, que de um tímido início (contendo apenas sites/páginas estáticas), evoluiu para uma plataforma muito mais robusta, tendo inclusive ultrapassado as aplicações desktop.

Assim, hoje é impossível (ou totalmente incorreto) desenvolver software utilizando as práticas da época do Delphi e do Visual Studio. Na prática, aquela história de arrastar componentes em uma janela, definir suas propriedades utilizando uma janela editora de propriedades e, escrever manipuladores de eventos para os controles da tela, está com os dias contados.

Para ter uma ideia, essas mesmas ferramentas (em suas atualizações e/ou novas versões) já possuem formas de você aliar o recurso de arrasta e solta com boas práticas de programação.

Inicialmente, é necessário programas com qualidade no maior nível possível. Qualidade que deve ser percebida na eficiência ao realizar o trabalho, na facilidade de utilizar e também no pequeno número de bugs que espera encontrar na aplicação.

Em segundo lugar, para que esta qualidade seja adquirida, muitos testes precisam ser feitos e se possível, testes automatizados para que situações como carga de uso e situações de stress da aplicação, possam ser simuladas antes que a aplicação seja colocada em produção. Procurando utilizar estes padrões, você abre espaço para aplicar, por exemplo, o TDD.

Nota do DevMan

TDD (Test Driven Development) é um método para desenvolvimento de software que prioriza, através de uma série de recomendações propostas por metodologias ágeis, a construção de soluções em um modo no qual as mesmas poderão ser facilmente integradas a ferramentas de execução automatizada de testes unitários. A adoção desta prática está condicionada à escrita de tais testes antes mesmo da codificação das partes da aplicação que serão submetidas aos mesmos.

Uma das principais vantagens em se atuar desta maneira é, sem sombra de dúvidas, assegurar um grau mínimo de testes na aplicação que está sendo elaborada.

Design Paterns

Como é possível gerar valor ao seu produto atendendo as necessidades do cliente, entregando dentro do prazo e ao mesmo tempo, permitindo que o produto possa evoluir (futuramente)?

A resposta foi dada no início do século XX por Henry Ford: padronização do processo de construção.

Mesmo que você não possa ter uma “linha de montagem” para um software, como existe para produtos como automóveis, é possível padronizar a elaboração destes fazendo a separação em camadas, estabelecendo fases e milestones que precisam ser atingido em cada uma destas.

A adoção de design patterns é hoje uma questão de sobrevivência. Até projetos pequenos podem se beneficiar de práticas como separação de regras de negócio, persistência de dados e apresentação destes (UI).

Na sua essência, os três designs patterns que estão sendo vistos nesta série de artigos tem em comum a prática de separar dados, apresentação e, a conexão entre os mesmos. Assim, é provável que mesmo que você não possua conhecimento do MVC, MVP ou MVVM, sua equipe use práticas que estão enraizadas na base destes.

É importante salientar que o MVP é na verdade uma evolução da separação em camadas e do MVC.

Nota do DevMan

Milestone é uma técnica de gerência de projetos que permite o teste da funcionalidade de um novo produto ao longo do projeto, não é uma atividade e não possui duração.

...

Quer ler esse conteúdo completo? Tenha acesso completo