opinionated android
DESCRIPTION
Charla sobre buenas prácticas de Android realizada en la Codemotion 2014. Puedes seguirme en twitter en @nhpattTRANSCRIPT
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:FindbugsCheckstylePMD/CPD
Ignorad los field naming conventions del core de Android
MADRID · NOV 21-22 · 2014
Código
● Clean Code
● SOLID
MADRID · NOV 21-22 · 2014
Buenas prácticas de Android
Usad Android Lint
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
MADRID · NOV 21-22 · 2014
Inyección de dependencias
● Usaréis alguna librería de inyección de dependencias, no?
MADRID · NOV 21-22 · 2014
Inyección de dependencias
● Roboguice
● Dagger (+ButterKnife)
MADRID · NOV 21-22 · 2014
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
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
MADRID · NOV 21-22 · 2014
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
BD?
● SQL
● SQL con content providers?
MADRID · NOV 21-22 · 2014
BD?
● ORMLite● SugarORM● GreenDAO● ADAFramework● ActiveAndroid
ORMLite / SugarORM
MADRID · NOV 21-22 · 2014
Comunicación entre servicios...
Es un dolor comunicar información entre servicios, actividades, async tasks…
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) {}
MADRID · NOV 21-22 · 2014
Keep an eye on
● Reactive programming en Android con RxJava
● Echadle un ojo
MADRID · NOV 21-22 · 2014
Keep an eye on
RxJava(+[RxAndroid]) + Retrofit = Bliss
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
MADRID · NOV 21-22 · 2014
Testing
Cómo siempre, echadle un ojo a Square● Spoon● AssertJ
Jenkins, plz.
MADRID · NOV 21-22 · 2014
Pls, Android guys
Soporte para Java 8?
Mientras tanto tendremos quevivir 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
MADRID · NOV 21-22 · 2014
Libros
The Busy Coder's Guide to Android Development
MADRID · NOV 21-22 · 2014
Links
● vogella● buenas prácticas de futurice● muchas charlas!
MADRID · NOV 21-22 · 2014
Feedback
tinyurl.com/codemotionandroid
MADRID · NOV 21-22 · 2014
¿Dudas o preguntas?
MADRID · NOV 21-22 · 2014
Opinionated Android
Javier Gamarra@nhpatt