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
rhttp://conference.javace.org/
http://conference.javace.org/
Hablando Androlês...
http://conference.javace.org/
Hablando Androlês...
http://conference.javace.org/
Programadores Android
Usam Roboguice
Não usam
Mas por quê?
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)
http://conference.javace.org/
Ah sim, a Activity...
Show me the code (e um exemplo)
http://conference.javace.org/
HttpServlet JFrame Activity
Show me the code (e um exemplo)
http://conference.javace.org/
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...
Show me the code
http://conference.javace.org/
Show me the code
http://conference.javace.org/
Coisas demais...
http://conference.javace.org/
E pode ter mais, tudo dentro da mesma
Activity!!
Muita responsabilidade para a Activity!
(Não é legal!)
Então o que fazer?
http://conference.javace.org/
Dividir para conquistar!
Separamos as responsabilidades
Uma classe a parte...
http://conference.javace.org/
E uma Activity mais simples
http://conference.javace.org/
http://conference.javace.org/
Ok melhorou... Mas
ainda não estou
sentindo aquela
sensação de “saciedade
codificada mórbida”...
É aí onde entra o RoboGuice
http://conference.javace.org/
Sem mais delongas... Vamos ao código:
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é?
http://conference.javace.org/
RoboGuice é como uma factory methods
gratuita!
@Inject é o novo new
O que mais posso fazer?
http://conference.javace.org/
System Services
@Inject Vibrator vibrator
this.getSystemService(Context.VIBRATOR_SERVIC
E);
@Inject SharedPreferences preferencias
O que mais posso fazer?
http://conference.javace.org/
Ainda view’s
@Inject Random random
@InjectExtra Bundle extra
Ainda tem mais?
http://conference.javace.org/
Logs
Classe Ln (Log Natural)
É mais rápida
Recurso a varargs
Debug e verbose são os mais dispendiosos
Vai um progresso aí?
http://conference.javace.org/
Vai um progresso aí?
http://conference.javace.org/
E o teste?
http://conference.javace.org/
Preciso nem perguntar se
todo mundo testa o
código que faz... :P
E o teste?
http://conference.javace.org/
Tá brincando que tem mais?!
http://conference.javace.org/
Se tem? Muito mais...
Onde encontrar?
Nas referências
No meu blog: http://diogosouza.com.br
Internet
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/
http://conference.javace.org/
Simplicidade
O simples pelo Simples...
Ou melhor, o mais simples
pelo simples...
http://conference.javace.org/
Obrigado!!
Top Related