MVP ShowCast 2013–Arquitetura web moderna

mvp-showcast-logo-160x160No dia 30 de novembro participei do MVP ShowCast, evento que traz uma sequência de palestras online relacionadas a desenvolvimento de software e infraestrutura. Apresentei na trilha de arquitetura e falei um pouco de componentes e elementos de uma app moderna (ainda caberia NodeJs e AngularJs, claro).

E antes que digam sobre o slide 28/29, eu amo o MVC. Meus pontos a respeito foi para a observação do desenvolvimento MVP quanto a distribuição das responsabilidades (SoC), desenvolvimento colaborativo (UI Developer/Manage Code Developer) e testabilidade.

Não.. Não disse que o MVP é melhor que MVC ou vice e versa, ou um é substituível por outro (não entrei neste mérito). Padrões foram feitos para te ajudar, principalmente para deixar o código mais legível e compreensível (mesmo que seja somente você que leia o código). E nisto, ambos cumprem o papel, pois são padrões reconhecídos.

Para deixar claro:

Padrão MVP

  • A view é mais flexível ao modelo. O presenter é responsável pelo binding do model com a view.
  • É mais fácil de teste de unidade, porque a interação com a view é através de uma interface.(mais um ponto interessante para deixar a  view bem desacoplada para os testes de JS também).
  • Normalmente uma view tem um presenter. No MVP, uma view complexa pode ter vários presenters.

Padrão MVC

Resumindo, a idéia básica por trás do padrão MVP (que por sinal é baseado no MVC) é a separação de preocupações. Isso melhora sim a capacidade de teste e os mocks podem ser usados para testar parte do domínio. Além disso, nós podemos mudar as views para representar os dados do modelo de forma diferente. Mas isto depende do cenário, do ambiente em que está trabalhando, do projeto e a equipe que está. De toda forma, compensa estudar com carinho cada parte.

Existe um gargalo muito grande na interface quando se desenvolve aplicações web. Sendo assim, todo o cuidado com a view é pouco.

E você? O que acrescentaria a mais?