SlideShare a Scribd company logo
1 of 42
Simples pelo Simples:
Google Android com RoboGuice
                              Diogo Souza
                 http://diogosouza.com.br
Diogo Souza
   Entusiasta Java e
    grande curioso do
    Android (mesmo sem
    um samsung galaxy...)

   Systems Analyst at
    Instituto Atlântico

    @diogo_souza_c

    http://diogosouza.com.b
    r
                          http://conference.javace.org/
http://conference.javace.org/
Hablando Androlês...




       http://conference.javace.org/
Hablando Androlês...

               Programadores Android




                                          Usam Roboguice
                                          Não usam




Mas por quê?


                     http://conference.javace.org/
Quem usa?




  http://conference.javace.org/
Mas afinal de contas, quem é
esse tal de RoboGuice?

              http://conference.javace.org/
Partes rápidas

   Framework de injeção de dependências

   Código-aberto

   Feito para o Android

   Base no projeto Google Guice




                           http://conference.javace.org/
Revisando...
   By Wikipédia:
     “(Dependency Injection, em inglês) é um padrão de
     desenvolvimento de programas de computadores
     utilizado quando é necessário manter baixo o nível de
     acoplamento entre diferentes módulos de um sistema.”




                           http://conference.javace.org/
Um pouco de história


O Cara
                            Michael Burton
                                Engenheiro de
                                 Software
                                Líder no Groupon
                                Autor do RoboGuice




                            Acredite, não consegui nenhuma imagem
                            melhor... 

                http://conference.javace.org/
Um pouco de história



   “Menos código significa menos
      possibilidades de bugs”

“É quase impossível escrever uma app
Android que não se pareça com uma app
               Android”

                                          (Mike Burton)
               http://conference.javace.org/
Entendendo este suco


   Primeiro tínhamos (e ainda temos) as
    fábricas estáticas



   E agora, injeção!




                        http://conference.javace.org/
Entendendo este suco
   E o que posso injetar com ele?

       Views

       Resources, extras, contentViews

       POJOs (sim, ele usa o construtor default)

       Contextos e atividades

                          http://conference.javace.org/
E como ele faz isso?

Context. That’s the secret!




          http://conference.javace.org/
Configurando...

   Baixe os jars (roboguice v.2.0 e guice v3.0)

   Adicione ao projeto/classpath

   Enjoy the play!!




                        http://conference.javace.org/
Configurando...

   E pra quem curte o maven (quem não curte?):

<dependency>
    <groupId>org.roboguice</groupId>
    <artifactId>roboguice</artifactId>
    <version>2.0</version>
</dependency>




                              http://conference.javace.org/
Show me the code (e um exemplo)

Ah sim, a Activity...




                        http://conference.javace.org/
Show me the code (e um exemplo)




HttpServlet    JFrame                          Activity




               http://conference.javace.org/
Show me the code (e um exemplo)

   Não é raro encontrar:

       Activities grandes

       Com muitas responsabilidades

       Chamando umas às outras, ou outros objetos até, e
        enviando também suas próprias referências

       Contando uma história...

                              http://conference.javace.org/
Show me the code




     http://conference.javace.org/
Show me the code




     http://conference.javace.org/
Coisas demais...

E pode ter mais, tudo dentro da mesma
                Activity!!

Muita responsabilidade para a Activity!

            (Não é legal!)

                http://conference.javace.org/
Então o que fazer?



    Dividir para conquistar!

Separamos as responsabilidades




             http://conference.javace.org/
Uma classe a parte...




       http://conference.javace.org/
E uma Activity mais simples




           http://conference.javace.org/
Ok melhorou... Mas
   ainda não estou
   sentindo aquela
   sensação de “saciedade
   codificada mórbida”...



http://conference.javace.org/
É aí onde entra o RoboGuice
Sem mais delongas... Vamos ao código:




                      http://conference.javace.org/
E o novo CalculoIMCActivity




           http://conference.javace.org/
Só pra não dizer que não mostrei a telinha...




                   http://conference.javace.org/
Legal, né?



   RoboGuice é como uma factory methods
    gratuita!

   @Inject é o novo new




                    http://conference.javace.org/
O que mais posso fazer?


System Services

  @Inject Vibrator vibrator
  this.getSystemService(Context.VIBRATOR_SERVIC
  E);



  @Inject SharedPreferences preferencias


                   http://conference.javace.org/
O que mais posso fazer?


Ainda view’s

  @Inject Random random


  @InjectExtra Bundle extra




                  http://conference.javace.org/
Ainda tem mais?
   Logs

       Classe Ln (Log Natural)

       É mais rápida

       Recurso a varargs

       Debug e verbose são os mais dispendiosos

                            http://conference.javace.org/
Vai um progresso aí?




       http://conference.javace.org/
Vai um progresso aí?




       http://conference.javace.org/
E o teste?



Preciso nem perguntar se
todo mundo testa o
código que faz... :P




                    http://conference.javace.org/
E o teste?




  http://conference.javace.org/
Tá brincando que tem mais?!


   Se tem? Muito mais...

   Onde encontrar?
       Nas referências
       No meu blog: http://diogosouza.com.br
       Internet



                         http://conference.javace.org/
Referências

   http://code.google.com/p/roboguice/

   http://www.lukew.com/

   http://blog.caelum.com.br/

   http://www.gonow.com.br




                        http://conference.javace.org/
http://conference.javace.org/
Simplicidade



      O simples pelo Simples...




               Ou melhor, o mais simples
               pelo simples...

                 http://conference.javace.org/
Obrigado!!




http://conference.javace.org/

More Related Content

What's hot

Teste cabra da peste
Teste cabra da pesteTeste cabra da peste
Teste cabra da pesteMichele Silva
 
Desenvolvimento PHP com Vagrant - TDC 2012
Desenvolvimento PHP com Vagrant - TDC 2012Desenvolvimento PHP com Vagrant - TDC 2012
Desenvolvimento PHP com Vagrant - TDC 2012Rogerio Prado de Jesus
 
Testando uma aplicação AngularJS utilizando o Karma
Testando uma aplicação AngularJS utilizando o KarmaTestando uma aplicação AngularJS utilizando o Karma
Testando uma aplicação AngularJS utilizando o KarmaHenrique Limas
 
Webapp, já posso investir nisso ? Latinoware 2011
Webapp, já posso investir nisso ? Latinoware 2011Webapp, já posso investir nisso ? Latinoware 2011
Webapp, já posso investir nisso ? Latinoware 2011Bruno Fernandes "PorKaria"
 
Utilizando o wordpress para aplicativos mobile
Utilizando o wordpress para aplicativos mobileUtilizando o wordpress para aplicativos mobile
Utilizando o wordpress para aplicativos mobileFellyph Cintra
 
Desenvolvimento PHP com Vagrant - 7Masters PHP
Desenvolvimento PHP com Vagrant - 7Masters PHPDesenvolvimento PHP com Vagrant - 7Masters PHP
Desenvolvimento PHP com Vagrant - 7Masters PHPRogerio Prado de Jesus
 
2017 08-11 - Androidos V - Minicurso - Introdução ao android
2017 08-11 - Androidos V - Minicurso - Introdução ao android2017 08-11 - Androidos V - Minicurso - Introdução ao android
2017 08-11 - Androidos V - Minicurso - Introdução ao androidMessias Batista
 
[Curso Java Basico] Aula 12: Lendo dados do teclado usando a classe Scanner
[Curso Java Basico] Aula 12: Lendo dados do teclado usando a classe Scanner[Curso Java Basico] Aula 12: Lendo dados do teclado usando a classe Scanner
[Curso Java Basico] Aula 12: Lendo dados do teclado usando a classe ScannerLoiane Groner
 
JavaScript Robotics: o que acontece quando o hardware se encontra com o JavaS...
JavaScript Robotics: o que acontece quando o hardware se encontra com o JavaS...JavaScript Robotics: o que acontece quando o hardware se encontra com o JavaS...
JavaScript Robotics: o que acontece quando o hardware se encontra com o JavaS...Felipe de Albuquerque
 
Automatize seus testes de UI com a Espresso!
Automatize seus testes de UI com a Espresso!Automatize seus testes de UI com a Espresso!
Automatize seus testes de UI com a Espresso!Ramon Ribeiro Rabello
 
Tdd em django sem desculpas versao final
Tdd em django sem desculpas versao finalTdd em django sem desculpas versao final
Tdd em django sem desculpas versao finalAdriano Petrich
 
Workshop on Android Rom Creation - FISTA/ISCTE 2014
Workshop on Android Rom Creation - FISTA/ISCTE 2014Workshop on Android Rom Creation - FISTA/ISCTE 2014
Workshop on Android Rom Creation - FISTA/ISCTE 2014Flávio Moringa
 
Aprendendo Angular com a CLI
Aprendendo Angular com a CLIAprendendo Angular com a CLI
Aprendendo Angular com a CLIVanessa Me Tonini
 
Html5 para estudantes universitários
Html5 para estudantes universitáriosHtml5 para estudantes universitários
Html5 para estudantes universitáriosPaullo Norato
 

What's hot (20)

Teste cabra da peste
Teste cabra da pesteTeste cabra da peste
Teste cabra da peste
 
Desenvolvimento PHP com Vagrant - TDC 2012
Desenvolvimento PHP com Vagrant - TDC 2012Desenvolvimento PHP com Vagrant - TDC 2012
Desenvolvimento PHP com Vagrant - TDC 2012
 
Testando uma aplicação AngularJS utilizando o Karma
Testando uma aplicação AngularJS utilizando o KarmaTestando uma aplicação AngularJS utilizando o Karma
Testando uma aplicação AngularJS utilizando o Karma
 
Novidades no Netbeans 6
Novidades no Netbeans 6Novidades no Netbeans 6
Novidades no Netbeans 6
 
Webapp, já posso investir nisso ? Latinoware 2011
Webapp, já posso investir nisso ? Latinoware 2011Webapp, já posso investir nisso ? Latinoware 2011
Webapp, já posso investir nisso ? Latinoware 2011
 
Maven - Aula 02
Maven - Aula 02Maven - Aula 02
Maven - Aula 02
 
Maven - Aula 03
Maven - Aula 03Maven - Aula 03
Maven - Aula 03
 
Utilizando o wordpress para aplicativos mobile
Utilizando o wordpress para aplicativos mobileUtilizando o wordpress para aplicativos mobile
Utilizando o wordpress para aplicativos mobile
 
Desenvolvimento PHP com Vagrant - 7Masters PHP
Desenvolvimento PHP com Vagrant - 7Masters PHPDesenvolvimento PHP com Vagrant - 7Masters PHP
Desenvolvimento PHP com Vagrant - 7Masters PHP
 
Groovy Power
Groovy PowerGroovy Power
Groovy Power
 
2017 08-11 - Androidos V - Minicurso - Introdução ao android
2017 08-11 - Androidos V - Minicurso - Introdução ao android2017 08-11 - Androidos V - Minicurso - Introdução ao android
2017 08-11 - Androidos V - Minicurso - Introdução ao android
 
[Curso Java Basico] Aula 12: Lendo dados do teclado usando a classe Scanner
[Curso Java Basico] Aula 12: Lendo dados do teclado usando a classe Scanner[Curso Java Basico] Aula 12: Lendo dados do teclado usando a classe Scanner
[Curso Java Basico] Aula 12: Lendo dados do teclado usando a classe Scanner
 
Controle de versão com Git
Controle de versão com GitControle de versão com Git
Controle de versão com Git
 
JavaScript Robotics: o que acontece quando o hardware se encontra com o JavaS...
JavaScript Robotics: o que acontece quando o hardware se encontra com o JavaS...JavaScript Robotics: o que acontece quando o hardware se encontra com o JavaS...
JavaScript Robotics: o que acontece quando o hardware se encontra com o JavaS...
 
Automatize seus testes de UI com a Espresso!
Automatize seus testes de UI com a Espresso!Automatize seus testes de UI com a Espresso!
Automatize seus testes de UI com a Espresso!
 
Tdd em django sem desculpas versao final
Tdd em django sem desculpas versao finalTdd em django sem desculpas versao final
Tdd em django sem desculpas versao final
 
Workshop on Android Rom Creation - FISTA/ISCTE 2014
Workshop on Android Rom Creation - FISTA/ISCTE 2014Workshop on Android Rom Creation - FISTA/ISCTE 2014
Workshop on Android Rom Creation - FISTA/ISCTE 2014
 
Aprendendo Angular com a CLI
Aprendendo Angular com a CLIAprendendo Angular com a CLI
Aprendendo Angular com a CLI
 
Html5 para estudantes universitários
Html5 para estudantes universitáriosHtml5 para estudantes universitários
Html5 para estudantes universitários
 
Maven em 10 minutos
Maven em 10 minutosMaven em 10 minutos
Maven em 10 minutos
 

Similar to RoboGuice Android Dependência Injeção

Kyrios: Infra-estrutura livre para desenvolvimento de software
Kyrios: Infra-estrutura livre para desenvolvimento de softwareKyrios: Infra-estrutura livre para desenvolvimento de software
Kyrios: Infra-estrutura livre para desenvolvimento de softwareFábio Nogueira de Lucena
 
Desenvolvendo com Dojo Toolkit
Desenvolvendo com Dojo ToolkitDesenvolvendo com Dojo Toolkit
Desenvolvendo com Dojo ToolkitFlávio Lisboa
 
Javascript levado a serio
Javascript levado a serioJavascript levado a serio
Javascript levado a serioJaydson Gomes
 
Palestra Demoiselle V1.x no 11 FISL
Palestra Demoiselle V1.x no 11 FISL Palestra Demoiselle V1.x no 11 FISL
Palestra Demoiselle V1.x no 11 FISL Emerson Saito
 
JavaFX: A nova biblioteca gráfica da plataforma Java
JavaFX: A nova biblioteca gráfica da plataforma JavaJavaFX: A nova biblioteca gráfica da plataforma Java
JavaFX: A nova biblioteca gráfica da plataforma JavajesuinoPower
 
JavaFX 2 - TDC 2012
JavaFX 2 - TDC 2012JavaFX 2 - TDC 2012
JavaFX 2 - TDC 2012jesuinoPower
 
ArduinoDay 2015 - OpenDevice
ArduinoDay 2015 -  OpenDeviceArduinoDay 2015 -  OpenDevice
ArduinoDay 2015 - OpenDeviceRicardo Rufino
 
Hands on de desenvolvimento rápido de apllicações java ee com forge
Hands on de desenvolvimento rápido de apllicações java ee com forgeHands on de desenvolvimento rápido de apllicações java ee com forge
Hands on de desenvolvimento rápido de apllicações java ee com forgeRafael Pestano
 
Femug #9 iniciando com testes em node js!
Femug #9   iniciando com testes em node js!Femug #9   iniciando com testes em node js!
Femug #9 iniciando com testes em node js!Leandro Nishijima
 
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...Daniel Makiyama
 
Zabbix - Sou Dev, o que eu tenho a ver com isso? - André Déo (Comunidade Zabb...
Zabbix - Sou Dev, o que eu tenho a ver com isso? - André Déo (Comunidade Zabb...Zabbix - Sou Dev, o que eu tenho a ver com isso? - André Déo (Comunidade Zabb...
Zabbix - Sou Dev, o que eu tenho a ver com isso? - André Déo (Comunidade Zabb...Zabbix BR
 
Introdução ao JavaFX
Introdução ao JavaFXIntrodução ao JavaFX
Introdução ao JavaFXjesuinoPower
 
Google app engine para lean startups: the good, the bad and the ugly
Google app engine para lean startups: the good, the bad and the uglyGoogle app engine para lean startups: the good, the bad and the ugly
Google app engine para lean startups: the good, the bad and the uglyPET Computação
 
OpenDevice IoT - 2016 (LowLevel)
OpenDevice IoT - 2016 (LowLevel)OpenDevice IoT - 2016 (LowLevel)
OpenDevice IoT - 2016 (LowLevel)Ricardo Rufino
 

Similar to RoboGuice Android Dependência Injeção (20)

Kyrios: Infra-estrutura livre para desenvolvimento de software
Kyrios: Infra-estrutura livre para desenvolvimento de softwareKyrios: Infra-estrutura livre para desenvolvimento de software
Kyrios: Infra-estrutura livre para desenvolvimento de software
 
Desenvolvendo com Dojo Toolkit
Desenvolvendo com Dojo ToolkitDesenvolvendo com Dojo Toolkit
Desenvolvendo com Dojo Toolkit
 
Javascript levado a serio
Javascript levado a serioJavascript levado a serio
Javascript levado a serio
 
Java Web Fácil com VRaptor
Java Web Fácil com VRaptorJava Web Fácil com VRaptor
Java Web Fácil com VRaptor
 
Palestra Demoiselle V1.x no 11 FISL
Palestra Demoiselle V1.x no 11 FISL Palestra Demoiselle V1.x no 11 FISL
Palestra Demoiselle V1.x no 11 FISL
 
JavaFX: A nova biblioteca gráfica da plataforma Java
JavaFX: A nova biblioteca gráfica da plataforma JavaJavaFX: A nova biblioteca gráfica da plataforma Java
JavaFX: A nova biblioteca gráfica da plataforma Java
 
JavaFX 2
JavaFX 2JavaFX 2
JavaFX 2
 
Como me dei bem com Java
Como me dei bem com JavaComo me dei bem com Java
Como me dei bem com Java
 
JavaFX 2 - TDC 2012
JavaFX 2 - TDC 2012JavaFX 2 - TDC 2012
JavaFX 2 - TDC 2012
 
ArduinoDay 2015 - OpenDevice
ArduinoDay 2015 -  OpenDeviceArduinoDay 2015 -  OpenDevice
ArduinoDay 2015 - OpenDevice
 
Hands on de desenvolvimento rápido de apllicações java ee com forge
Hands on de desenvolvimento rápido de apllicações java ee com forgeHands on de desenvolvimento rápido de apllicações java ee com forge
Hands on de desenvolvimento rápido de apllicações java ee com forge
 
Femug #9 iniciando com testes em node js!
Femug #9   iniciando com testes em node js!Femug #9   iniciando com testes em node js!
Femug #9 iniciando com testes em node js!
 
Introducao Spring ROO
Introducao Spring ROOIntroducao Spring ROO
Introducao Spring ROO
 
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
 
Zabbix - Sou Dev, o que eu tenho a ver com isso? - André Déo (Comunidade Zabb...
Zabbix - Sou Dev, o que eu tenho a ver com isso? - André Déo (Comunidade Zabb...Zabbix - Sou Dev, o que eu tenho a ver com isso? - André Déo (Comunidade Zabb...
Zabbix - Sou Dev, o que eu tenho a ver com isso? - André Déo (Comunidade Zabb...
 
Netbeans Slides
Netbeans SlidesNetbeans Slides
Netbeans Slides
 
Introdução ao JavaFX
Introdução ao JavaFXIntrodução ao JavaFX
Introdução ao JavaFX
 
Vivendo de hacking
Vivendo de hackingVivendo de hacking
Vivendo de hacking
 
Google app engine para lean startups: the good, the bad and the ugly
Google app engine para lean startups: the good, the bad and the uglyGoogle app engine para lean startups: the good, the bad and the ugly
Google app engine para lean startups: the good, the bad and the ugly
 
OpenDevice IoT - 2016 (LowLevel)
OpenDevice IoT - 2016 (LowLevel)OpenDevice IoT - 2016 (LowLevel)
OpenDevice IoT - 2016 (LowLevel)
 

More from Diogo Souza

GraalVM: Harder, Better, Faster, Stronger
GraalVM: Harder, Better, Faster, StrongerGraalVM: Harder, Better, Faster, Stronger
GraalVM: Harder, Better, Faster, StrongerDiogo Souza
 
Batch, Spring, Performance e outras coisas mais...
Batch, Spring, Performance e outras coisas mais...Batch, Spring, Performance e outras coisas mais...
Batch, Spring, Performance e outras coisas mais...Diogo Souza
 
Desenvolvimento Web: Por que Java?
Desenvolvimento Web: Por que Java?Desenvolvimento Web: Por que Java?
Desenvolvimento Web: Por que Java?Diogo Souza
 
Envers + Seam + JBoss: Why to use?
Envers + Seam + JBoss: Why to use?Envers + Seam + JBoss: Why to use?
Envers + Seam + JBoss: Why to use?Diogo Souza
 
Android: Por que usar? Como desenvolver?
Android: Por que usar? Como desenvolver?Android: Por que usar? Como desenvolver?
Android: Por que usar? Como desenvolver?Diogo Souza
 
Java, android e o mercado de ti
Java, android e o mercado de tiJava, android e o mercado de ti
Java, android e o mercado de tiDiogo Souza
 

More from Diogo Souza (6)

GraalVM: Harder, Better, Faster, Stronger
GraalVM: Harder, Better, Faster, StrongerGraalVM: Harder, Better, Faster, Stronger
GraalVM: Harder, Better, Faster, Stronger
 
Batch, Spring, Performance e outras coisas mais...
Batch, Spring, Performance e outras coisas mais...Batch, Spring, Performance e outras coisas mais...
Batch, Spring, Performance e outras coisas mais...
 
Desenvolvimento Web: Por que Java?
Desenvolvimento Web: Por que Java?Desenvolvimento Web: Por que Java?
Desenvolvimento Web: Por que Java?
 
Envers + Seam + JBoss: Why to use?
Envers + Seam + JBoss: Why to use?Envers + Seam + JBoss: Why to use?
Envers + Seam + JBoss: Why to use?
 
Android: Por que usar? Como desenvolver?
Android: Por que usar? Como desenvolver?Android: Por que usar? Como desenvolver?
Android: Por que usar? Como desenvolver?
 
Java, android e o mercado de ti
Java, android e o mercado de tiJava, android e o mercado de ti
Java, android e o mercado de ti
 

RoboGuice Android Dependência Injeção

  • 1. Simples pelo Simples: Google Android com RoboGuice Diogo Souza http://diogosouza.com.br
  • 2. Diogo Souza  Entusiasta Java e grande curioso do Android (mesmo sem um samsung galaxy...)  Systems Analyst at Instituto Atlântico @diogo_souza_c http://diogosouza.com.b r http://conference.javace.org/
  • 4. Hablando Androlês... http://conference.javace.org/
  • 5. Hablando Androlês... Programadores Android Usam Roboguice Não usam Mas por quê? http://conference.javace.org/
  • 6. Quem usa? http://conference.javace.org/
  • 7. Mas afinal de contas, quem é esse tal de RoboGuice? http://conference.javace.org/
  • 8. Partes rápidas  Framework de injeção de dependências  Código-aberto  Feito para o Android  Base no projeto Google Guice http://conference.javace.org/
  • 9. Revisando...  By Wikipédia: “(Dependency Injection, em inglês) é um padrão de desenvolvimento de programas de computadores utilizado quando é necessário manter baixo o nível de acoplamento entre diferentes módulos de um sistema.” http://conference.javace.org/
  • 10. Um pouco de história O Cara  Michael Burton  Engenheiro de Software  Líder no Groupon  Autor do RoboGuice Acredite, não consegui nenhuma imagem melhor...  http://conference.javace.org/
  • 11. Um pouco de história “Menos código significa menos possibilidades de bugs” “É quase impossível escrever uma app Android que não se pareça com uma app Android” (Mike Burton) http://conference.javace.org/
  • 12. Entendendo este suco  Primeiro tínhamos (e ainda temos) as fábricas estáticas  E agora, injeção! http://conference.javace.org/
  • 13. Entendendo este suco  E o que posso injetar com ele?  Views  Resources, extras, contentViews  POJOs (sim, ele usa o construtor default)  Contextos e atividades http://conference.javace.org/
  • 14. E como ele faz isso? Context. That’s the secret! http://conference.javace.org/
  • 15. Configurando...  Baixe os jars (roboguice v.2.0 e guice v3.0)  Adicione ao projeto/classpath  Enjoy the play!! http://conference.javace.org/
  • 16. Configurando...  E pra quem curte o maven (quem não curte?): <dependency> <groupId>org.roboguice</groupId> <artifactId>roboguice</artifactId> <version>2.0</version> </dependency> http://conference.javace.org/
  • 17. Show me the code (e um exemplo) Ah sim, a Activity... http://conference.javace.org/
  • 18. Show me the code (e um exemplo) HttpServlet JFrame Activity http://conference.javace.org/
  • 19. Show me the code (e um exemplo)  Não é raro encontrar:  Activities grandes  Com muitas responsabilidades  Chamando umas às outras, ou outros objetos até, e enviando também suas próprias referências  Contando uma história... http://conference.javace.org/
  • 20. Show me the code http://conference.javace.org/
  • 21. Show me the code http://conference.javace.org/
  • 22. Coisas demais... E pode ter mais, tudo dentro da mesma Activity!! Muita responsabilidade para a Activity! (Não é legal!) http://conference.javace.org/
  • 23. Então o que fazer? Dividir para conquistar! Separamos as responsabilidades http://conference.javace.org/
  • 24. Uma classe a parte... http://conference.javace.org/
  • 25. E uma Activity mais simples http://conference.javace.org/
  • 26. Ok melhorou... Mas ainda não estou sentindo aquela sensação de “saciedade codificada mórbida”... http://conference.javace.org/
  • 27. É aí onde entra o RoboGuice Sem mais delongas... Vamos ao código: http://conference.javace.org/
  • 28. E o novo CalculoIMCActivity http://conference.javace.org/
  • 29. Só pra não dizer que não mostrei a telinha... http://conference.javace.org/
  • 30. Legal, né?  RoboGuice é como uma factory methods gratuita!  @Inject é o novo new http://conference.javace.org/
  • 31. O que mais posso fazer? System Services @Inject Vibrator vibrator this.getSystemService(Context.VIBRATOR_SERVIC E); @Inject SharedPreferences preferencias http://conference.javace.org/
  • 32. O que mais posso fazer? Ainda view’s @Inject Random random @InjectExtra Bundle extra http://conference.javace.org/
  • 33. Ainda tem mais?  Logs  Classe Ln (Log Natural)  É mais rápida  Recurso a varargs  Debug e verbose são os mais dispendiosos http://conference.javace.org/
  • 34. Vai um progresso aí? http://conference.javace.org/
  • 35. Vai um progresso aí? http://conference.javace.org/
  • 36. E o teste? Preciso nem perguntar se todo mundo testa o código que faz... :P http://conference.javace.org/
  • 37. E o teste? http://conference.javace.org/
  • 38. Tá brincando que tem mais?!  Se tem? Muito mais...  Onde encontrar?  Nas referências  No meu blog: http://diogosouza.com.br  Internet http://conference.javace.org/
  • 39. Referências  http://code.google.com/p/roboguice/  http://www.lukew.com/  http://blog.caelum.com.br/  http://www.gonow.com.br http://conference.javace.org/
  • 41. Simplicidade O simples pelo Simples... Ou melhor, o mais simples pelo simples... http://conference.javace.org/