Slide 1

Slide 1 text

CLEAN ARCHITECTURE NO ANDROID FELIPE COSTA

Slide 2

Slide 2 text

ANDROID

Slide 3

Slide 3 text

ANDROID MVC ▸ Trygve Reenskaug (1979) ▸ Smalltalk ▸ GUI ▸ UI X lógica ▸ Componentes Principais: Model, View, Controller MODEL CONTROLLER VIEW UPDATES MANIPULATES USER SEES USES

Slide 4

Slide 4 text

ANDROID MODEL ▸ Dados da Aplicação ▸ Regras de negócio ▸ Lógica ▸ Funções

Slide 5

Slide 5 text

ANDROID VIEW ▸ UI ▸ Exibição de dados do modelo

Slide 6

Slide 6 text

ANDROID CONTROLLER ▸ Intermediação entre View e Model ▸ Envio de comandos para o Model ▸ Envio de comandos para a View

Slide 7

Slide 7 text

ANDROID PROBLEMAS DO MVC ▸ Mistura entre lógica de domínio/negócio/aplicação ▸ Fat Controller ▸ Fat model, skinny controller ▸ God objects ▸ Difícil de testar (Unit Test)

Slide 8

Slide 8 text

ANDROID ALTERNATIVAS AO MVC ▸ MVP ▸ MVVM

Slide 9

Slide 9 text

CLEAN ARCHITECTURE

Slide 10

Slide 10 text

ARCHITECTURE IS ABOUT INTENT, NOT FRAMEWORKS Uncle Bob CLEAN ARCHITECTURE

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

CLEAN ARCHITECTURE ENTITIES ▸ Objetos de negócio

Slide 13

Slide 13 text

CLEAN ARCHITECTURE USE CASES ▸ Regras de negócio ▸ Controle do fluxo de dados de e para as entities ▸ Interactors

Slide 14

Slide 14 text

CLEAN ARCHITECTURE INTERFACE ADAPTERS ▸ Conversão dos dados para um formato mais conviniente para os use Cases e entities ▸ Presenters e Controllers

Slide 15

Slide 15 text

CLEAN ARCHITECTURE FRAMEWORKS AND DRIVERS ▸ UI ▸ Frameworks ▸ Database ▸ Tools ▸ etc

Slide 16

Slide 16 text

CLEAN ARCHITECTURE CROSSING BOUNDARIES PRESENTER USE CASE OUTPUT PORT USE CASE INPUT PORT USE CASE INTERACTION CONTROLLER CONTROLE DE FLUXO

Slide 17

Slide 17 text

CLEAN ARCHITECTURE DEPENDENCY RULE ▸ A dependência de código somente pode apontar para dentro ▸ Os círculos internos não podem conhecer nada sobre os círculos externos ▸ Não está restrito a quantidade de círculos

Slide 18

Slide 18 text

CLEAN ARCHITECTURE CONSEQUÊNCIAS ▸ Independência de Framework ▸ Testável (Unit Test) ▸ Independência de UI ▸ Independência de DB ▸ Independência de agentes externos

Slide 19

Slide 19 text

DO NOT DEPEND ON THINGS THAT CHANGE OR ARE LIKELY TO CHANGE Uncle Bob CLEAN ARCHITECTURE

Slide 20

Slide 20 text

ANDROID ARCHITECTURE

Slide 21

Slide 21 text

ANDROID ARCHITECTURE DOMAIN LAYER JAVA BUSINESS RULES DATA LAYER ANDROID LIBRARY DATA PRESENTATION LAYER JAVA MVC MVP MVVM APPLICATION LAYER ANDROID APP UI

Slide 22

Slide 22 text

ANDROID ARCHITECTURE CONSEQUÊNCIAS ▸ Fácil de Manter ▸ Fácil de testar (Unit Test) ▸ Muito coesa ▸ Desacoplada ▸ S.O.L.I.D

Slide 23

Slide 23 text

ANDROID ARCHITECTURE LINKS ▸ https://blog.8thlight.com/uncle-bob/2012/08/13/the-clean- architecture.html ▸ https://vimeo.com/43612849 ▸ http://fernandocejas.com/2014/09/03/architecting- android-the-clean-way/ ▸ https://github.com/android10/Android-CleanArchitecture ▸ https://github.com/mcharmas/shoppinglist-clean- architecture-example

Slide 24

Slide 24 text

QA

Slide 25

Slide 25 text

OBRIGADO FELIPE COSTA E-MAIL: [email protected] TWITTER: @FELIPEHJCOSTA