Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Arquitetura limpa nas apps - Utilizando VIPER n...

Avatar for Diogo Cabral Diogo Cabral
December 08, 2018

Arquitetura limpa nas apps - Utilizando VIPER no Android

Quantas vezes já nos deparamos com um projeto Android com uma estrutura confusa, muitas vezes com classes infladas e sem responsabilidades e objetivos únicos? Isso claramente nos traz uma série de dificuldades: desde a sua manutenção até a forma como testamos o nosso código. Uma alternativa será proposta para você: a utilização do VIPER, que é uma arquitetura baseada nos conceitos do Clean Architecture. Aqui todos os detalhes dessa arquitetura serão exibidos, além de fazer comparativos com outras conhecidas atualmente e mostra como utilizo na prática em uma app que é desenvolvida por uma equipe distribuída, além de ser utilizada por milhares de pessoas.

Avatar for Diogo Cabral

Diogo Cabral

December 08, 2018
Tweet

More Decks by Diogo Cabral

Other Decks in Programming

Transcript

  1. MVC MVP MVVM * Complexidade para testar os módulos que

    contém regras de negócios * Classes infladas com muitas regras de negócio * Módulos sem responsabilidade única
  2. Escrever testes para aplicações iOS era complexo O padrão arquitetural

    para desenvolvimento proposto pela Apple era o MVC Manter projetos com códigos acoplados e uma grande quantidade de pessoas envolvidas se tornava inviável
  3. Pontos Fortes Pontos Fracos Facilidade para estruturar os testes Necessidade

    de mais escrita de código (mais boilerplate) Separação do código em camadas de claro entendimento, com um propósito único Impactos minimizados em mudanças realizadas no código Reuso de módulos e sub-módulos Possibilidade maior de pensar na divisão de tarefas do projeto com a equipe Curva de aprendizado mais íngreme* Conteúdo disponível para aprender a usar a arquitetura é menor em comparação à outras
  4. ~ 3,2 milhões de downloads ~ 10 milhões de sessões

    Cross Platform ~ 30 pessoas na equipe
  5. Arquitetura menos sensível a mudanças recorrentes Equipe separada por features

    Código de uma feature sendo desenvolvida simultaneamente por várias pessoas TDD Arquitetura aplicável para ambas as plataformas Adaptabilidade ao desenvolvimento multiplataforma
  6. Nenhuma arquitetura é bala de prata, mas com certeza uma

    vai ser mais aplicável que outra a depender do contexto
  7. Referências 1. https://medium.com/@ankit.sinhal/mvc-mvp-and-mvvm-design-pattern-6e169567bbad 2. http://geekswithblogs.net/dlussier/archive/2009/11/21/136454.aspx 3. https://www.objc.io/issues/13-architecture/viper/ 4. https://infinum.co/the-capsized-eight/developing-ios-apps-using-viper-3-years-later 5.

    https://cheesecakelabs.com/blog/using-viper-architecture-android/ 6. https://gist.github.com/ygrenzinger/14812a56b9221c9feca0b3621518635b 7. https://mateuszkoslacz.com/why-shall-i-choose-viper-architecture/ 8. https://www.ustwo.com/blog/ins-and-outs-of-viper/ 9. https://github.com/drcabral/ViperSampleApp