SlideShare una empresa de Scribd logo
1 de 44
Descargar para leer sin conexión
MADRID · NOV 21-22 · 2014 
Opinionated Android 
Javier Gamarra 
@nhpatt
MADRID · NOV 21-22 · 2014 
¿Quién? 
Javier Gamarra / @nhpatt 
Tech Lead, @agilecyl, android/java/javascript
MADRID · NOV 21-22 · 2014 
¿Por qué? 
● Para los novatos 
● Para los cómodos 
● Por dar una opinión (IMHO)
MADRID · NOV 21-22 · 2014 
IDE 
Android Studio
MADRID · NOV 21-22 · 2014 
Build tool 
Gradle.
MADRID · NOV 21-22 · 2014 
Build tool
MADRID · NOV 21-22 · 2014 
Código 
Java bien escrito: 
Findbugs 
Checkstyle 
PMD/CPD 
Ignorad los field naming conventions del 
core de Android
MADRID · NOV 21-22 · 2014 
Código 
● Clean Code 
● SOLID
Buenas prácticas de Android 
Usad Android Lint 
MADRID · NOV 21-22 · 2014 
Huid de clases Application
MADRID · NOV 21-22 · 2014 
Arquitectura 
No es un juego de niños 
Pero hay buenas propuestas: 
● Clean Architecture 
● Arquitectura Hexagonal
MADRID · NOV 21-22 · 2014 
Y en UI 
Separad concerns! 
● MVP 
● MVP/MVVM 
Incluso podéis plantearos si usar fragments
MADRID · NOV 21-22 · 2014 
Librerías 
Hay unas pocas librerías… 
Con muchas recomendaciones... 
Pero algunas imprescindibles
Inyección de dependencias 
● Usaréis alguna librería de inyección de 
dependencias, no? 
MADRID · NOV 21-22 · 2014
MADRID · NOV 21-22 · 2014 
Inyección de dependencias 
● Roboguice 
● Dagger (+ButterKnife)
Buenas prácticas de Android 
Ignorad el título de las guías “Avoid 
dependency injection frameworks“ 
Usad Proguard (vale, hay problemas) 
MADRID · NOV 21-22 · 2014
MADRID · NOV 21-22 · 2014 
APIs REST 
● Async Tasks
MADRID · NOV 21-22 · 2014 
APIs REST 
● Volley 
● Retrofit
MADRID · NOV 21-22 · 2014 
APIs REST 
public interface GitHubService { 
@GET("/users/{user}/repos") 
List<Repo> listRepos(@Path("user") String user); 
} 
vs 
StringRequest stringRequest = new StringRequest(Request.Method.GET, url, 
new Response.Listener() { 
… 
}
MADRID · NOV 21-22 · 2014 
Carga de imágenes 
● Universal Image Loader 
● Picasso
Jake Wharton! 
https://github.com/JakeWharton/u2020 
● Dagger 
● ButterKnife 
● Retrofit 
● Picasso 
● OkHttp 
● RxJava 
● Timber 
● Madge 
● Scalpel 
● Hugo 
● StaggeredGrid 
● SDK Manager Plugin 
MADRID · NOV 21-22 · 2014
MADRID · NOV 21-22 · 2014 
BD? 
● SQL 
● SQL con content providers?
MADRID · NOV 21-22 · 2014 
BD? 
● ORMLite 
● SugarORM 
● GreenDAO 
● ADAFramework 
● ActiveAndroid 
ORMLite / SugarORM
Comunicación entre servicios... 
Es un dolor comunicar información entre 
servicios, actividades, async tasks… 
MADRID · NOV 21-22 · 2014 
Bus de eventos al rescate!
MADRID · NOV 21-22 · 2014 
Comunicación 
EventBus 
Otto
MADRID · NOV 21-22 · 2014 
Comunicación 
eventBus.post(new AnyEventType(42)); 
eventBus.register(this); 
public void onEvent(AnyEventType event) {...}; 
vs 
eventBus.post(new AnyEventType(42)); 
@Subscribe public void eventAvailable(AnyEventType event) {}
Keep an eye on 
● Reactive programming en Android con 
RxJava 
MADRID · NOV 21-22 · 2014 
● Echadle un ojo
Keep an eye on 
RxJava(+[RxAndroid]) + Retrofit = Bliss 
MADRID · NOV 21-22 · 2014 
eventAPI.login(). 
flatMap(status -> api.getUserStatus()). 
subscribe(onComplete, onError); 
api.login(new Callback<ResponseBody>() { 
@Override 
public void success(...) { 
api.getUserStatus(new Callback<UserStatus>() { 
@Override 
public void success() {
MADRID · NOV 21-22 · 2014 
Testing 
TESTEAD!
MADRID · NOV 21-22 · 2014 
Testing 
Escuchad a este tío, en serio.
MADRID · NOV 21-22 · 2014 
Testing 
JUnit + 
● JMock 
● PowerMock 
● Mockito
MADRID · NOV 21-22 · 2014 
Testing 
Robolectric + 
Espresso 
Robotium/Calabash 
Appium
Testing 
Cómo siempre, echadle un ojo a Square 
● Spoon 
● AssertJ 
MADRID · NOV 21-22 · 2014 
Jenkins, plz.
MADRID · NOV 21-22 · 2014 
Pls, Android guys 
Soporte para Java 8? 
Mientras tanto tendremos que 
vivir con retrolambda
MADRID · NOV 21-22 · 2014 
Brace yourselves 
Otros lenguajes! 
● Kotlin?
MADRID · NOV 21-22 · 2014 
Madrid? 
Soy nuevo en Madrid 
Hay un meetup de Xamarin 
Dónde está nuestro meetup?
MADRID · NOV 21-22 · 2014 
Preocupate por mejorar
MADRID · NOV 21-22 · 2014 
¿Qué leer/escuchar? 
Weekly Newsletter 
Android Developers Backstage
MADRID · NOV 21-22 · 2014 
¿A quién seguir? - world 
● Jake Wharton 
● Cyril Mottier 
● Mark Murphy 
● Romain Guy 
● Reto Meier
MADRID · NOV 21-22 · 2014 
¿A quién seguir? - local 
● flipper83 
● pedro_g_s 
● akelael 
● fernando_cejas
Libros 
The Busy Coder's Guide to Android 
Development 
MADRID · NOV 21-22 · 2014
MADRID · NOV 21-22 · 2014 
Links 
● vogella 
● buenas prácticas de futurice 
● muchas charlas!
MADRID · NOV 21-22 · 2014 
Feedback 
tinyurl.com/codemotionandroid
¿Dudas o preguntas? 
MADRID · NOV 21-22 · 2014
MADRID · NOV 21-22 · 2014 
Opinionated Android 
Javier Gamarra 
@nhpatt

Más contenido relacionado

Similar a Opinionated android

Desarrollo tecnologias software_libre_open_source
Desarrollo tecnologias software_libre_open_sourceDesarrollo tecnologias software_libre_open_source
Desarrollo tecnologias software_libre_open_source
Mario IC
 

Similar a Opinionated android (20)

Introduciendo drupal 8
Introduciendo drupal 8Introduciendo drupal 8
Introduciendo drupal 8
 
Scrum bad smells (codemotion 2014)
Scrum bad smells (codemotion 2014)Scrum bad smells (codemotion 2014)
Scrum bad smells (codemotion 2014)
 
Big data: a data sicentist view
Big data: a data sicentist viewBig data: a data sicentist view
Big data: a data sicentist view
 
Codemotion 2014 - Desarrollo Agil de Producto para Emprendedores
Codemotion 2014  - Desarrollo Agil de Producto para EmprendedoresCodemotion 2014  - Desarrollo Agil de Producto para Emprendedores
Codemotion 2014 - Desarrollo Agil de Producto para Emprendedores
 
5 meses de juegos ágiles
5 meses de juegos ágiles5 meses de juegos ágiles
5 meses de juegos ágiles
 
Quita, que tú no sabes; ya lo hago yo. Generación e inyección de código en ti...
Quita, que tú no sabes; ya lo hago yo. Generación e inyección de código en ti...Quita, que tú no sabes; ya lo hago yo. Generación e inyección de código en ti...
Quita, que tú no sabes; ya lo hago yo. Generación e inyección de código en ti...
 
Codemotion: descubriendo las cachés
Codemotion: descubriendo las cachésCodemotion: descubriendo las cachés
Codemotion: descubriendo las cachés
 
La Noche Electoral
La Noche ElectoralLa Noche Electoral
La Noche Electoral
 
Cuando los desarrolladores conocieron SSAS, Business Intelligence y Big Data
Cuando los desarrolladores conocieron SSAS, Business Intelligence y Big DataCuando los desarrolladores conocieron SSAS, Business Intelligence y Big Data
Cuando los desarrolladores conocieron SSAS, Business Intelligence y Big Data
 
JIIDE 2012 - Clientes IDE 3D: SOSTRE y Glob3 Mobile
JIIDE 2012 - Clientes IDE 3D: SOSTRE y Glob3 MobileJIIDE 2012 - Clientes IDE 3D: SOSTRE y Glob3 Mobile
JIIDE 2012 - Clientes IDE 3D: SOSTRE y Glob3 Mobile
 
Mejora tus retrospectivas (codemotion 2014)
Mejora tus retrospectivas (codemotion 2014)Mejora tus retrospectivas (codemotion 2014)
Mejora tus retrospectivas (codemotion 2014)
 
Sobre GrooScript
Sobre GrooScriptSobre GrooScript
Sobre GrooScript
 
Del free style al mvp
Del free style al mvpDel free style al mvp
Del free style al mvp
 
Panorama del ecosistema de software libre GIS 2009
Panorama del ecosistema de software libre GIS 2009Panorama del ecosistema de software libre GIS 2009
Panorama del ecosistema de software libre GIS 2009
 
Desarrollo de pruebas en entornos Java EE
Desarrollo de pruebas en entornos Java EEDesarrollo de pruebas en entornos Java EE
Desarrollo de pruebas en entornos Java EE
 
Swadroid Presentación fiesta F4
Swadroid Presentación fiesta F4Swadroid Presentación fiesta F4
Swadroid Presentación fiesta F4
 
Codemotion 2015 crash y youdebug
Codemotion 2015   crash y youdebugCodemotion 2015   crash y youdebug
Codemotion 2015 crash y youdebug
 
Curso Angular 9 - CodeURJC - Marzo 2020
Curso Angular 9 - CodeURJC - Marzo 2020Curso Angular 9 - CodeURJC - Marzo 2020
Curso Angular 9 - CodeURJC - Marzo 2020
 
Carrera de fondo - La continuada lucha de AngularJS - CodeMotion 2015
Carrera de fondo - La continuada lucha de AngularJS - CodeMotion 2015Carrera de fondo - La continuada lucha de AngularJS - CodeMotion 2015
Carrera de fondo - La continuada lucha de AngularJS - CodeMotion 2015
 
Desarrollo tecnologias software_libre_open_source
Desarrollo tecnologias software_libre_open_sourceDesarrollo tecnologias software_libre_open_source
Desarrollo tecnologias software_libre_open_source
 

Más de Javier Gamarra

Más de Javier Gamarra (13)

Performance myths in android
Performance myths in androidPerformance myths in android
Performance myths in android
 
RxJava in practice
RxJava in practice RxJava in practice
RxJava in practice
 
Cambiar una empresa con juegos ágiles
Cambiar una empresa con juegos ágilesCambiar una empresa con juegos ágiles
Cambiar una empresa con juegos ágiles
 
New Android Languages
New Android LanguagesNew Android Languages
New Android Languages
 
Arduino - Cuarta sesión
Arduino - Cuarta sesiónArduino - Cuarta sesión
Arduino - Cuarta sesión
 
Arduino - Tercera sesión
Arduino - Tercera sesiónArduino - Tercera sesión
Arduino - Tercera sesión
 
Hibernate - JPA @luce 5
Hibernate - JPA @luce 5Hibernate - JPA @luce 5
Hibernate - JPA @luce 5
 
Hibernate - JPA @luce 4
Hibernate - JPA @luce 4Hibernate - JPA @luce 4
Hibernate - JPA @luce 4
 
Hibernate - JPA @luce 3
Hibernate - JPA @luce 3Hibernate - JPA @luce 3
Hibernate - JPA @luce 3
 
Hibernate - JPA @luce 2
Hibernate - JPA @luce 2Hibernate - JPA @luce 2
Hibernate - JPA @luce 2
 
Hibernate - JPA @luce
Hibernate - JPA @luceHibernate - JPA @luce
Hibernate - JPA @luce
 
Codemotion 2013
Codemotion 2013Codemotion 2013
Codemotion 2013
 
CAS 2013
CAS 2013CAS 2013
CAS 2013
 

Último

Último (20)

NIVEL DE MADUREZ TECNOLÓGICA (TRL).pptx
NIVEL DE  MADUREZ TECNOLÓGICA (TRL).pptxNIVEL DE  MADUREZ TECNOLÓGICA (TRL).pptx
NIVEL DE MADUREZ TECNOLÓGICA (TRL).pptx
 
Herramientas informáticas. Sara Torres R.
Herramientas informáticas. Sara Torres R.Herramientas informáticas. Sara Torres R.
Herramientas informáticas. Sara Torres R.
 
Introducción a la robótica con arduino..pptx
Introducción a la robótica con arduino..pptxIntroducción a la robótica con arduino..pptx
Introducción a la robótica con arduino..pptx
 
BUSCADORES DE INTERNET (Universidad de Sonora).
BUSCADORES DE INTERNET (Universidad de Sonora).BUSCADORES DE INTERNET (Universidad de Sonora).
BUSCADORES DE INTERNET (Universidad de Sonora).
 
Licencias para el Uso y el Desarrollo de Software
Licencias para el Uso y el Desarrollo de SoftwareLicencias para el Uso y el Desarrollo de Software
Licencias para el Uso y el Desarrollo de Software
 
Pons, A. - El desorden digital - guia para historiadores y humanistas [2013].pdf
Pons, A. - El desorden digital - guia para historiadores y humanistas [2013].pdfPons, A. - El desorden digital - guia para historiadores y humanistas [2013].pdf
Pons, A. - El desorden digital - guia para historiadores y humanistas [2013].pdf
 
lenguaje algebraico.pptx álgebra, trigonometria
lenguaje algebraico.pptx álgebra, trigonometrialenguaje algebraico.pptx álgebra, trigonometria
lenguaje algebraico.pptx álgebra, trigonometria
 
Inteligencia Artificial para usuarios nivel inicial
Inteligencia Artificial para usuarios nivel inicialInteligencia Artificial para usuarios nivel inicial
Inteligencia Artificial para usuarios nivel inicial
 
Gestión de concurrencia y bloqueos en SQL Server
Gestión de concurrencia y bloqueos en SQL ServerGestión de concurrencia y bloqueos en SQL Server
Gestión de concurrencia y bloqueos en SQL Server
 
VelderrainPerez_Paola_M1C1G63-097.pptx. LAS TiC
VelderrainPerez_Paola_M1C1G63-097.pptx. LAS TiCVelderrainPerez_Paola_M1C1G63-097.pptx. LAS TiC
VelderrainPerez_Paola_M1C1G63-097.pptx. LAS TiC
 
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
 
Bloque 1 _ Lectura base - Sistemas Distribuidos
Bloque 1 _ Lectura base - Sistemas DistribuidosBloque 1 _ Lectura base - Sistemas Distribuidos
Bloque 1 _ Lectura base - Sistemas Distribuidos
 
taller de tablas en word para estudiantes de secundaria
taller de tablas en word para estudiantes de secundariataller de tablas en word para estudiantes de secundaria
taller de tablas en word para estudiantes de secundaria
 
Unidad 1- Historia y Evolucion de las computadoras.pdf
Unidad 1- Historia y Evolucion de las computadoras.pdfUnidad 1- Historia y Evolucion de las computadoras.pdf
Unidad 1- Historia y Evolucion de las computadoras.pdf
 
Navegadores de internet - Nuevas Tecnologías de la Información y la Comunicación
Navegadores de internet - Nuevas Tecnologías de la Información y la ComunicaciónNavegadores de internet - Nuevas Tecnologías de la Información y la Comunicación
Navegadores de internet - Nuevas Tecnologías de la Información y la Comunicación
 
¡Mira mi nuevo diseño hecho en Canva!.pdf
¡Mira mi nuevo diseño hecho en Canva!.pdf¡Mira mi nuevo diseño hecho en Canva!.pdf
¡Mira mi nuevo diseño hecho en Canva!.pdf
 
Presentacion y Extension de tema para Blogger.pptx
Presentacion y Extension de tema para Blogger.pptxPresentacion y Extension de tema para Blogger.pptx
Presentacion y Extension de tema para Blogger.pptx
 
herramientas informaticas mas utilizadas
herramientas informaticas mas utilizadasherramientas informaticas mas utilizadas
herramientas informaticas mas utilizadas
 
De Olmos Santiago_Dolores _ M1S3AI6.pptx
De Olmos Santiago_Dolores _ M1S3AI6.pptxDe Olmos Santiago_Dolores _ M1S3AI6.pptx
De Olmos Santiago_Dolores _ M1S3AI6.pptx
 
JORNADA INTELIGENCIA ARTIFICIAL Y REALIDAD VIRTUAL
JORNADA INTELIGENCIA ARTIFICIAL Y REALIDAD VIRTUALJORNADA INTELIGENCIA ARTIFICIAL Y REALIDAD VIRTUAL
JORNADA INTELIGENCIA ARTIFICIAL Y REALIDAD VIRTUAL
 

Opinionated android

  • 1. MADRID · NOV 21-22 · 2014 Opinionated Android Javier Gamarra @nhpatt
  • 2. MADRID · NOV 21-22 · 2014 ¿Quién? Javier Gamarra / @nhpatt Tech Lead, @agilecyl, android/java/javascript
  • 3. MADRID · NOV 21-22 · 2014 ¿Por qué? ● Para los novatos ● Para los cómodos ● Por dar una opinión (IMHO)
  • 4. MADRID · NOV 21-22 · 2014 IDE Android Studio
  • 5. MADRID · NOV 21-22 · 2014 Build tool Gradle.
  • 6. MADRID · NOV 21-22 · 2014 Build tool
  • 7. MADRID · NOV 21-22 · 2014 Código Java bien escrito: Findbugs Checkstyle PMD/CPD Ignorad los field naming conventions del core de Android
  • 8. MADRID · NOV 21-22 · 2014 Código ● Clean Code ● SOLID
  • 9. Buenas prácticas de Android Usad Android Lint MADRID · NOV 21-22 · 2014 Huid de clases Application
  • 10. MADRID · NOV 21-22 · 2014 Arquitectura No es un juego de niños Pero hay buenas propuestas: ● Clean Architecture ● Arquitectura Hexagonal
  • 11. MADRID · NOV 21-22 · 2014 Y en UI Separad concerns! ● MVP ● MVP/MVVM Incluso podéis plantearos si usar fragments
  • 12. MADRID · NOV 21-22 · 2014 Librerías Hay unas pocas librerías… Con muchas recomendaciones... Pero algunas imprescindibles
  • 13. Inyección de dependencias ● Usaréis alguna librería de inyección de dependencias, no? MADRID · NOV 21-22 · 2014
  • 14. MADRID · NOV 21-22 · 2014 Inyección de dependencias ● Roboguice ● Dagger (+ButterKnife)
  • 15. Buenas prácticas de Android Ignorad el título de las guías “Avoid dependency injection frameworks“ Usad Proguard (vale, hay problemas) MADRID · NOV 21-22 · 2014
  • 16. MADRID · NOV 21-22 · 2014 APIs REST ● Async Tasks
  • 17. MADRID · NOV 21-22 · 2014 APIs REST ● Volley ● Retrofit
  • 18. MADRID · NOV 21-22 · 2014 APIs REST public interface GitHubService { @GET("/users/{user}/repos") List<Repo> listRepos(@Path("user") String user); } vs StringRequest stringRequest = new StringRequest(Request.Method.GET, url, new Response.Listener() { … }
  • 19. MADRID · NOV 21-22 · 2014 Carga de imágenes ● Universal Image Loader ● Picasso
  • 20. Jake Wharton! https://github.com/JakeWharton/u2020 ● Dagger ● ButterKnife ● Retrofit ● Picasso ● OkHttp ● RxJava ● Timber ● Madge ● Scalpel ● Hugo ● StaggeredGrid ● SDK Manager Plugin MADRID · NOV 21-22 · 2014
  • 21. MADRID · NOV 21-22 · 2014 BD? ● SQL ● SQL con content providers?
  • 22. MADRID · NOV 21-22 · 2014 BD? ● ORMLite ● SugarORM ● GreenDAO ● ADAFramework ● ActiveAndroid ORMLite / SugarORM
  • 23. Comunicación entre servicios... Es un dolor comunicar información entre servicios, actividades, async tasks… MADRID · NOV 21-22 · 2014 Bus de eventos al rescate!
  • 24. MADRID · NOV 21-22 · 2014 Comunicación EventBus Otto
  • 25. MADRID · NOV 21-22 · 2014 Comunicación eventBus.post(new AnyEventType(42)); eventBus.register(this); public void onEvent(AnyEventType event) {...}; vs eventBus.post(new AnyEventType(42)); @Subscribe public void eventAvailable(AnyEventType event) {}
  • 26. Keep an eye on ● Reactive programming en Android con RxJava MADRID · NOV 21-22 · 2014 ● Echadle un ojo
  • 27. Keep an eye on RxJava(+[RxAndroid]) + Retrofit = Bliss MADRID · NOV 21-22 · 2014 eventAPI.login(). flatMap(status -> api.getUserStatus()). subscribe(onComplete, onError); api.login(new Callback<ResponseBody>() { @Override public void success(...) { api.getUserStatus(new Callback<UserStatus>() { @Override public void success() {
  • 28. MADRID · NOV 21-22 · 2014 Testing TESTEAD!
  • 29. MADRID · NOV 21-22 · 2014 Testing Escuchad a este tío, en serio.
  • 30. MADRID · NOV 21-22 · 2014 Testing JUnit + ● JMock ● PowerMock ● Mockito
  • 31. MADRID · NOV 21-22 · 2014 Testing Robolectric + Espresso Robotium/Calabash Appium
  • 32. Testing Cómo siempre, echadle un ojo a Square ● Spoon ● AssertJ MADRID · NOV 21-22 · 2014 Jenkins, plz.
  • 33. MADRID · NOV 21-22 · 2014 Pls, Android guys Soporte para Java 8? Mientras tanto tendremos que vivir con retrolambda
  • 34. MADRID · NOV 21-22 · 2014 Brace yourselves Otros lenguajes! ● Kotlin?
  • 35. MADRID · NOV 21-22 · 2014 Madrid? Soy nuevo en Madrid Hay un meetup de Xamarin Dónde está nuestro meetup?
  • 36. MADRID · NOV 21-22 · 2014 Preocupate por mejorar
  • 37. MADRID · NOV 21-22 · 2014 ¿Qué leer/escuchar? Weekly Newsletter Android Developers Backstage
  • 38. MADRID · NOV 21-22 · 2014 ¿A quién seguir? - world ● Jake Wharton ● Cyril Mottier ● Mark Murphy ● Romain Guy ● Reto Meier
  • 39. MADRID · NOV 21-22 · 2014 ¿A quién seguir? - local ● flipper83 ● pedro_g_s ● akelael ● fernando_cejas
  • 40. Libros The Busy Coder's Guide to Android Development MADRID · NOV 21-22 · 2014
  • 41. MADRID · NOV 21-22 · 2014 Links ● vogella ● buenas prácticas de futurice ● muchas charlas!
  • 42. MADRID · NOV 21-22 · 2014 Feedback tinyurl.com/codemotionandroid
  • 43. ¿Dudas o preguntas? MADRID · NOV 21-22 · 2014
  • 44. MADRID · NOV 21-22 · 2014 Opinionated Android Javier Gamarra @nhpatt