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

Modularização, porque devemos pensar nisso?

Modularização, porque devemos pensar nisso?

Vamos ver um pouco do que é modularização e seus benefícios em um projeto android, vamos ver também alguns desafios e como podemos iniciar a modularização no nosso projeto.

Tweet

More Decks by Alex Soares de Siqueira

Other Decks in Programming

Transcript

  1. ⇢ Library ⇢ Java ou Kotlin O que é um

    modulo? O que é um modulo?
  2. ⇢ Library ⇢ Java ou Kotlin ⇢ plugin: java-library O

    que é um modulo? O que é um modulo?
  3. O que é um modulo? ⇢ Dynamic Feature ⇢ Instalação

    Por demanda ⇢ Tempo, custo e Espaço O que é um modulo?
  4. O que é um modulo? ⇢ Dynamic Feature ⇢ Instalação

    Por demanda ⇢ Tempo, custo e Espaço ⇢ plugin: android.dynamic-feature O que é um modulo?
  5. Criando um módulo ⇢ Qual vai ser a sua responsabilidade?

    ⇢ Crie um README para explicar o funcionamento e objetivo
  6. Criando um módulo ⇢ Qual vai ser a sua responsabilidade?

    ⇢ Crie um README para explicar o funcionamento e objetivo ⇢ Crie classes e métodos como Internal
  7. Criando um módulo ⇢ Qual vai ser a sua responsabilidade?

    ⇢ Crie um README para explicar o funcionamento e objetivo ⇢ Crie classes e métodos como Internal ⇢ resourcePrefix em módulos que possuem resources.
  8. Criando um módulo ⇢ Qual vai ser a sua responsabilidade?

    ⇢ Crie um README para explicar o funcionamento e objetivo ⇢ Crie classes e métodos como Internal ⇢ resourcePrefix em módulos que possuem resources. ⇢ Utilize bem as configurações de dependência do Gradle
  9. Criando um módulo ⇢ Qual vai ser a sua responsabilidade?

    ⇢ Crie um README para explicar o funcionamento e objetivo ⇢ Crie classes e métodos como Internal ⇢ resourcePrefix em módulos que possuem resources. ⇢ Utilize bem as configurações de dependência do Gradle ⇢ Cuidado com referência circular.
  10. Separação de módulos ⇢ Módulo de feature ⇢ Pode ser

    um fluxo ou uma tela onde tem uma interação com o usuário
  11. ⇢ Módulo de feature ⇢ Pode ser um fluxo ou

    uma tela onde tem uma interação com o usuário ⇢ Fácil manutenção Separação de módulos
  12. ⇢ Módulo de feature ⇢ Pode ser um fluxo ou

    uma tela onde tem uma interação com o usuário ⇢ Fácil manutenção ⇢ Facilidade para testes A/B Separação de módulos
  13. ⇢ Módulo de feature ⇢ Pode ser um fluxo ou

    uma tela onde tem uma interação com o usuário ⇢ Fácil manutenção ⇢ Facilidade para testes A/B ⇢ Visão clara das features existentes no produto Separação de módulos
  14. ⇢ Módulo de layer ⇢ Fornecem funcionalidades e lógicas para

    as features. ⇢ Melhor isolamento de código Separação de módulos
  15. ⇢ Módulo de layer ⇢ Fornecem funcionalidades e lógicas para

    as features. ⇢ Melhor isolamento de código ⇢ Facilidade na hora de trocar uma biblioteca Separação de módulos
  16. ⇢ app ⇢ Realiza o start da aplicação ⇢ Navega

    para a primeira feature do app Módulos base
  17. ⇢ app ⇢ Realiza o start da aplicação ⇢ Navega

    para a primeira feature do app ⇢ Realiza as configurações que precisam do contexto da aplicação Módulos base
  18. ⇢ app ⇢ Realiza o start da aplicação ⇢ Navega

    para a primeira feature do app ⇢ Realiza as configurações que precisam do contexto da aplicação ⇢ Deve conhecer os módulos de feature Módulos base
  19. ⇢ core ⇢ Códigos que serão compartilhados entre módulos de

    feature ⇢ Não é um módulo de utils Módulos base
  20. ⇢ core ⇢ Códigos que serão compartilhados entre módulos de

    feature ⇢ Não é um módulo de utils ⇢ *Pode servir abstrações para outros módulos Módulos base
  21. ⇢ navigation ⇢ Isola a navegação entre módulos de feature

    ⇢ Módulos de feature conhecem o navigation Módulos base
  22. ⇢ navigation ⇢ Isola a navegação entre módulos de feature

    ⇢ Módulos de feature conhecem o navigation ⇢ *Não deveria conhecer os módulos de feature Módulos base
  23. ⇢ navigation ⇢ Isola a navegação entre módulos de feature

    ⇢ Módulos de feature conhecem o navigation ⇢ *Não deveria conhecer os módulos de feature ⇢ Existem vários desafios e várias formas de navegação :( Módulos base
  24. Por onde começar? ⇢ Checklist da arquitetura ⇢ Levantar todas

    as features que existem no projeto ⇢ Levantar as dependências que cada feature precisa
  25. Por onde começar? ⇢ Checklist da arquitetura ⇢ Levantar todas

    as features que existem no projeto ⇢ Levantar as dependências que cada feature precisa ⇢ Criar um diagrama de dependências e de features
  26. Por onde começar? ⇢ Checklist da arquitetura ⇢ Levantar todas

    as features que existem no projeto ⇢ Levantar as dependências que cada feature precisa ⇢ Criar um diagrama de dependências e de features ⇢ Verificar o uso e a separação de dependências externas
  27. Por onde começar? ⇢ Checklist da arquitetura ⇢ Levantar todas

    as features que existem no projeto ⇢ Levantar as dependências que cada feature precisa ⇢ Criar um diagrama de dependências e de features ⇢ Verificar o uso e a separação de dependências externas ⇢ Comece separando módulos que vão servir de base
  28. Por onde começar? ⇢ Checklist da arquitetura ⇢ Levantar todas

    as features que existem no projeto ⇢ Levantar as dependências que cada feature precisa ⇢ Criar um diagrama de dependências e de features ⇢ Verificar o uso e a separação de dependências externas ⇢ Comece separando módulos que vão servir de base ⇢ Inicie com features pequenas
  29. Por onde começar? ⇢ Checklist da arquitetura ⇢ Levantar todas

    as features que existem no projeto ⇢ Levantar as dependências que cada feature precisa ⇢ Criar um diagrama de dependências e de features ⇢ Verificar o uso e a separação de dependências externas ⇢ Comece separando módulos que vão servir de base ⇢ Inicie com features pequenas ⇢ É preciso refatorar uma feature? Sera que da para criar um modulo?
  30. Por onde começar? ⇢ Checklist da arquitetura ⇢ Levantar todas

    as features que existem no projeto ⇢ Levantar as dependências que cada feature precisa ⇢ Criar um diagrama de dependências e de features ⇢ Verificar o uso e a separação de dependências externas ⇢ Comece separando módulos que vão servir de base ⇢ Inicie com features pequenas ⇢ É preciso refatorar uma feature? Sera que da para criar um módulo? ⇢ E sempre se pergunte "para modularizar essa feature, as suas dependências já estão modularizadas?”
  31. Desafios encontrados ⇢ BottomNavigation onde cada item é um módulo

    diferente ⇢ Módulos que implementavam outros módulos
  32. Desafios encontrados ⇢ BottomNavigation onde cada item é um módulo

    diferente ⇢ Módulos que implementavam outros módulos ⇢ Módulos que forneciam dependências externas
  33. Desafios encontrados ⇢ BottomNavigation onde cada item é um módulo

    diferente ⇢ Módulos que implementavam outros módulos ⇢ Módulos que forneciam dependências externas ⇢ Quando o módulo app esta muito grande e é necessário acessar algumas funcionalidades através de outros módulos.