para testes unitários; É possível fazer testes de integração entre Model e Controller ignorando a View (mock). Teste de integração com a View, pode ser mais complexo e exigir ferramentas especializadas. Se usar um framework que implementa o padrão MVC, pode gerar dependência, dificultando os testes; MVC: testabilidade 🚨
Potenciais: Se não for implementado adequadamente, o MVC pode levar a um aumento no acoplamento entre os componentes, o que tornaria a manutenção mais difícil
mobiles. Não faz muito sentido para aplicações com pouca ou nenhuma UI. MVC: aplicabilidade 🚨 ✅ desacoplar a interface do usuário da lógica de negócios; interações frequentes com a interface do usuário. Quando você precisa:
para testes unitários; A lógica de apresentação pode ser testada de forma mais eficaz; A View é tratada como interface, logo é mais fácil criar implementações de teste. Teste de integração com a View podem ser necessários para verificar a integração correta entre os componentes. MVP: testabilidade 🚨
mais fácil adicionar ou modificar funcionalidades sem afetar outras partes do sistema. Pode ser complexo devido a quantidade de código. MVP: flexibilidade e extensibilidade
sentido para aplicações com pouca ou nenhuma UI. Curva de aprendizado. MVP: aplicabilidade 🚨 ✅ quando a lógica da apresentação for crítica; a testabilidade for uma prioridade; de várias interfaces de usuário. Quando você precisa:
interface do usuário? É uma tarefa simples? 🚨 MVVM: testabilidade Planejar cuidadosamente cenários de teste e priorizar os testes que cobrem a lógica de negócios mais crítica.
novos recursos; Facilita o reuso? Cuidar o número de ViewModels Duplicação de código flexibilidade e extensibilidade MVVM: Alterações significativas em UI podem ocasionar alterações de vários ViewModels e Views. 🚨
não implementado corretamente pode causar problemas de desempenho. aplicabilidade 🚨 ✅ quando a lógica da apresentação for crítica; a testabilidade for uma prioridade; de várias interfaces de usuário. Quando você precisa: MVVM:
interface do usuário? “Permitir que um aplicativo seja igualmente conduzido por usuários, programas, testes automatizados ou scripts em lote, e que seja desenvolvido e testado isoladamente de seus eventuais dispositivos de tempo de execução e bancos de dados.” HEXAGONAL: testabilidade Alistair Cockburn
UI sem impactar o negócio; Podem ser escolhidas as tecnologias e frameworks que mais se adequam a cada camada; Cuidado com o overhead de código flexibilidade e extensibilidade HEXAGONAL:
definidas e podem ser modificada ou atualizada independentemente das outras; reutilização de componentes fácil de realizar manutenção a longo prazo? HEXAGONAL: Requer um planejamento adequado e boas práticas de engenharia de software
pequena escala ou protótipos o uso dessa arquitetura pode trazer um esforço a mais. aplicabilidade 🚨 ✅ seu aplicativo precisa de muitas integrações externas; a testabilidade for um fator importante. Quando você precisa: HEXAGONAL: