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

Apresentação VIPER na Prática

Apresentação VIPER na Prática

Apresentação da palestra sobre VIPER na Prática, no 24º CocoaTalks BH, realizado na AvenueCode. Practical sample application: https://github.com/lucioandre/DemoVIPERCocoaheads

Avatar for lucioandre

lucioandre

October 30, 2017

Other Decks in Programming

Transcript

  1. Por que abandonar o MVC Apple? 2 • Baixa Coesão

    e Alto Acoplamento*. • ViewController acaba se tornando o "Faz Tudo" da sua arquitetura. • Regras de Negócio diretamente atreladas a UI. • Dificulta a Reusabilidade, Extensabilidade e Unit Testing.
  2. O que é VIPER? 4 É uma aplicação da Clean

    Architecture para iOS. Divide a estrutura lógica de um app em Módulos com camadas com diferentes responsabilidades, seguindo os princípios SOLID. A utilização destes princípios trazem ao VIPER grandes vantagens...
  3. Vantagens 5 • Baixo Acoplamento e Alta Coesão. • Reusabilidade

    e Extensabilidade. • Unit-Testing. • Facilita o trabalho em equipe. • Ganha-se tempo na Manutenção do Projeto.
  4. Componentes do Módulo 7 View Responsável por apresentar a User

    Interface da forma que o Presenter requisita. Devolve ao Presenter os inputs do usuário.
  5. Componentes do Módulo 9 Presenter Prepara o conteúdo recebido do

    Interactor pra ser apresentado pela View. Reage aos eventos da View, enviando requisições ao Interactor ou ao Wireframe.
  6. Componentes do Módulo 11 Routing • Responsabilidade do Presenter e

    do Wireframe. • Wireframe: sabe como inicializar seu módulo e realizar a navegação de fato (push, present, etc), além de se comunicar com outros Wireframes. • Presenter sabe quando e para onde navegar, e invoca o Wireframe para realizar tal tarefa.
  7. Desvantagens 14 Nem tudo são Flores :( • Número de

    Classes cresce rapidamente; • Similaridade entre classes com mesma responsabilidade pode causar confusão; • Ramp up time é considerado alto; • Guidelines podem gerar interpretações diferentes. • Consumo maior de tempo no desenvolvimento. • Não recomendado para projetos simples ou curtos*