SlideShare una empresa de Scribd logo
1 de 32
Descargar para leer sin conexión
No quiero vuestra
basura en Android
guía del autoestopista galáctico hacia
un mejor código
Antonio Nicolás Pina
@ANPez
Betabeers
Murcia 2016
Índice
● Herramientas
● HTTP
● Base de datos
● Custom views
● Usa tu cabeza
Herramientas
Android Studio
● Es el IDE oficial.
● Además, desde finales de 2015, Eclipse no está soportado.
● La migración “no” es muy complicada.
● Gradle te simplificará mucho las cosas a largo plazo.
● ES
● EL
● IDE
● OFICIAL.
Librerías
● Siempre que puedas, utiliza una librería externa.
● No copies el código de una librería en tu proyecto. Utiliza gradle.
● Organiza tus dependencias en bloques. Te ayudará a mantenerlas.
● Utiliza variables para las versiones.
Librerías (y II)
● Una dependencia no se usa, se adopta.
○ Cuando importas a tu proyecto código externo, se convierte en tuyo.
○ Úsalo como si fuera tuyo.
○ Modifícalo como si fuera tuyo.
○ Publícalo como si fuera tuyo.
● Ten en mente siempre a NPM y left-pad.
● Usa-tu-cabeza.
HTTP
Retrofit
Retrofit
Retrofit (II). Sin RxJava
Retrofit (III). Inicialización
Retrofit (IV). Inicialización (y II)
Retrofit (y V). Uso
Base de datos
SQLite
● SQLite es leeeeeeeeeeeeeeeento. No lo uses en el hilo de la UI.
● NO utilices DatabaseOpenHelper como un God Object.
● Utiliza transacciones siempre que vayas a insertar datos.
● No hagas como yo hice, no intentes ser más listo que la plataforma.
Utiliza un ORM
Retrofit + DBFlow
Vistas
Vistas
● No crees vistas con muchos niveles de anidación, como en el ejemplo.
● Utiliza XML siempre que sea posible.
● No temas utilizar tamaños absolutos (android:layout_width=”50dp”).
● Piensa en cómo mejorar la legibilidad de tu XML.
● Utiliza nombres de ficheros que tengan sentido. Por ejemplo:
○ activity_main.xml
○ activity_list_elections.xml
○ activity_list_elections_cell.xml
Define todo lo que puedas en el XML
Usa tu cabeza
Intents
Justificación: ¿Entonces por qué Bitmap es Parcelable?
Intents
● ÚSALOS.
● No los uses.
● No confíes en singletons entre activities.
● Considera utilizar un Navigator.
Conclusiones
● Párate a pensar 5 segundos antes de tomar una decisión.
● Utiliza las herramientas que la plataforma te provee.
● Busca si tu problema ya lo ha resuelto alguien y, si puedes, úsalo.
● Una dependencia no se usa, se adopta.
Antonio Nicolás Pina
@ANPez

Más contenido relacionado

La actualidad más candente

La actualidad más candente (13)

Plasma active three akademy es-2013_bilbo
Plasma active three akademy es-2013_bilboPlasma active three akademy es-2013_bilbo
Plasma active three akademy es-2013_bilbo
 
El Crystal Encantado
El Crystal EncantadoEl Crystal Encantado
El Crystal Encantado
 
Plone 4 — what's up doc?
Plone 4 — what's up doc?Plone 4 — what's up doc?
Plone 4 — what's up doc?
 
Ecosistema de desarrollo basado en software libre
Ecosistema de desarrollo basado en software libreEcosistema de desarrollo basado en software libre
Ecosistema de desarrollo basado en software libre
 
Herramientas Web1.Pot
Herramientas  Web1.PotHerramientas  Web1.Pot
Herramientas Web1.Pot
 
HERRAMUENTAS WEB
HERRAMUENTAS WEBHERRAMUENTAS WEB
HERRAMUENTAS WEB
 
¿Por qué open source?
¿Por qué open source?¿Por qué open source?
¿Por qué open source?
 
Introducción a CoffeeScript
Introducción a CoffeeScriptIntroducción a CoffeeScript
Introducción a CoffeeScript
 
1. Objetivos del curso de GIT y GITHUB.
1. Objetivos del curso de GIT y GITHUB.1. Objetivos del curso de GIT y GITHUB.
1. Objetivos del curso de GIT y GITHUB.
 
Bootstrap
BootstrapBootstrap
Bootstrap
 
Dia5
Dia5Dia5
Dia5
 
Introducciòn a RequireJS
Introducciòn a RequireJSIntroducciòn a RequireJS
Introducciòn a RequireJS
 
Python Enterprise
Python EnterprisePython Enterprise
Python Enterprise
 

Destacado (8)

Base de datos
Base de datosBase de datos
Base de datos
 
Exposición SQLite Universidad de la Guajira
Exposición SQLite Universidad de la Guajira   Exposición SQLite Universidad de la Guajira
Exposición SQLite Universidad de la Guajira
 
SQLite y PHP: DQL - data query language
SQLite y PHP: DQL - data query languageSQLite y PHP: DQL - data query language
SQLite y PHP: DQL - data query language
 
NoSQL: la siguiente generación de Base de Datos
NoSQL: la siguiente generación de Base de DatosNoSQL: la siguiente generación de Base de Datos
NoSQL: la siguiente generación de Base de Datos
 
BD para Dispositivos Moviles - Unidad 3 SMBD Moviles
BD para Dispositivos Moviles - Unidad 3 SMBD MovilesBD para Dispositivos Moviles - Unidad 3 SMBD Moviles
BD para Dispositivos Moviles - Unidad 3 SMBD Moviles
 
NoSQL: Introducción a las Bases de Datos no estructuradas
NoSQL: Introducción a las Bases de Datos no estructuradasNoSQL: Introducción a las Bases de Datos no estructuradas
NoSQL: Introducción a las Bases de Datos no estructuradas
 
Bases de Datos No Relacionales (NoSQL): Cassandra, CouchDB, MongoDB y Neo4j
Bases de Datos No Relacionales (NoSQL): Cassandra, CouchDB, MongoDB y Neo4jBases de Datos No Relacionales (NoSQL): Cassandra, CouchDB, MongoDB y Neo4j
Bases de Datos No Relacionales (NoSQL): Cassandra, CouchDB, MongoDB y Neo4j
 
Base de datos
Base de datosBase de datos
Base de datos
 

Similar a Android código mejor guía

[DrupalCampSpain2023] Introducción al desarrollo de módulos en Drupal 10
[DrupalCampSpain2023] Introducción al desarrollo de módulos en Drupal 10[DrupalCampSpain2023] Introducción al desarrollo de módulos en Drupal 10
[DrupalCampSpain2023] Introducción al desarrollo de módulos en Drupal 10Keopx
 
Introduccion a Drupal 6 e-ghost
Introduccion a Drupal 6 e-ghostIntroduccion a Drupal 6 e-ghost
Introduccion a Drupal 6 e-ghostKeopx
 
MobileCONGalicia Introducción a Android
MobileCONGalicia Introducción a AndroidMobileCONGalicia Introducción a Android
MobileCONGalicia Introducción a AndroidAlberto Ruibal
 
Combinación ganadora: Plone como CMS, tu framework preferido como frontend
Combinación ganadora: Plone como CMS, tu framework preferido como frontendCombinación ganadora: Plone como CMS, tu framework preferido como frontend
Combinación ganadora: Plone como CMS, tu framework preferido como frontendmenttes
 
Lo que tienes que saber de Dart para Backend, frontend y Mobile..pptx
Lo que tienes que saber de Dart para Backend, frontend y Mobile..pptxLo que tienes que saber de Dart para Backend, frontend y Mobile..pptx
Lo que tienes que saber de Dart para Backend, frontend y Mobile..pptxSergio Antonio Ochoa Martinez
 
Spain AI 2022 - ¡Oh, un modelo de ML, vamos a desplegarlo! - Machine Learning...
Spain AI 2022 - ¡Oh, un modelo de ML, vamos a desplegarlo! - Machine Learning...Spain AI 2022 - ¡Oh, un modelo de ML, vamos a desplegarlo! - Machine Learning...
Spain AI 2022 - ¡Oh, un modelo de ML, vamos a desplegarlo! - Machine Learning...Ricardo Guerrero Gómez-Olmedo
 
Los reinos de finizens - Nuestro stark tecnológico
Los reinos de finizens - Nuestro stark tecnológicoLos reinos de finizens - Nuestro stark tecnológico
Los reinos de finizens - Nuestro stark tecnológicoFinizens
 
Si tu aplicación no responde rápido pierdes clientes
Si tu aplicación no responde rápido pierdes clientesSi tu aplicación no responde rápido pierdes clientes
Si tu aplicación no responde rápido pierdes clientesJesús Franco
 
Curso: Publicando mi proyecto web en Github
Curso: Publicando mi proyecto web en GithubCurso: Publicando mi proyecto web en Github
Curso: Publicando mi proyecto web en GithubCarlos Huamaní
 
Drupal 7 para sitios de alto rendimiento y alta disponibilidad
Drupal 7 para sitios de alto rendimiento y alta disponibilidadDrupal 7 para sitios de alto rendimiento y alta disponibilidad
Drupal 7 para sitios de alto rendimiento y alta disponibilidadIván Campaña Naranjo
 
Django - Curso Básico - Principales Conceptos
Django - Curso Básico - Principales ConceptosDjango - Curso Básico - Principales Conceptos
Django - Curso Básico - Principales ConceptosGeorge Navarro Gomez
 
Django - Curso Básico - Principales Conceptos
Django - Curso Básico - Principales ConceptosDjango - Curso Básico - Principales Conceptos
Django - Curso Básico - Principales ConceptosGeorge Navarro Gomez
 
El iPad como herramienta de productividad profesional #Productivity #iPadProED
El iPad como herramienta de productividad profesional #Productivity #iPadProEDEl iPad como herramienta de productividad profesional #Productivity #iPadProED
El iPad como herramienta de productividad profesional #Productivity #iPadProEDVenan Llona
 

Similar a Android código mejor guía (20)

[DrupalCampSpain2023] Introducción al desarrollo de módulos en Drupal 10
[DrupalCampSpain2023] Introducción al desarrollo de módulos en Drupal 10[DrupalCampSpain2023] Introducción al desarrollo de módulos en Drupal 10
[DrupalCampSpain2023] Introducción al desarrollo de módulos en Drupal 10
 
Introduccion a Drupal 6 e-ghost
Introduccion a Drupal 6 e-ghostIntroduccion a Drupal 6 e-ghost
Introduccion a Drupal 6 e-ghost
 
Tema 4.3 Ejemplo sobre teleco
Tema 4.3 Ejemplo sobre telecoTema 4.3 Ejemplo sobre teleco
Tema 4.3 Ejemplo sobre teleco
 
202204-Modernizando aplicaciones legacy
202204-Modernizando aplicaciones legacy202204-Modernizando aplicaciones legacy
202204-Modernizando aplicaciones legacy
 
MobileCONGalicia Introducción a Android
MobileCONGalicia Introducción a AndroidMobileCONGalicia Introducción a Android
MobileCONGalicia Introducción a Android
 
Combinación ganadora: Plone como CMS, tu framework preferido como frontend
Combinación ganadora: Plone como CMS, tu framework preferido como frontendCombinación ganadora: Plone como CMS, tu framework preferido como frontend
Combinación ganadora: Plone como CMS, tu framework preferido como frontend
 
Sobre GrooScript
Sobre GrooScriptSobre GrooScript
Sobre GrooScript
 
Working with a design system
Working with a design systemWorking with a design system
Working with a design system
 
Lo que tienes que saber de Dart para Backend, frontend y Mobile..pptx
Lo que tienes que saber de Dart para Backend, frontend y Mobile..pptxLo que tienes que saber de Dart para Backend, frontend y Mobile..pptx
Lo que tienes que saber de Dart para Backend, frontend y Mobile..pptx
 
Spain AI 2022 - ¡Oh, un modelo de ML, vamos a desplegarlo! - Machine Learning...
Spain AI 2022 - ¡Oh, un modelo de ML, vamos a desplegarlo! - Machine Learning...Spain AI 2022 - ¡Oh, un modelo de ML, vamos a desplegarlo! - Machine Learning...
Spain AI 2022 - ¡Oh, un modelo de ML, vamos a desplegarlo! - Machine Learning...
 
Sculpin
SculpinSculpin
Sculpin
 
Drupal 8 consola
Drupal 8 consolaDrupal 8 consola
Drupal 8 consola
 
Los reinos de finizens - Nuestro stark tecnológico
Los reinos de finizens - Nuestro stark tecnológicoLos reinos de finizens - Nuestro stark tecnológico
Los reinos de finizens - Nuestro stark tecnológico
 
Si tu aplicación no responde rápido pierdes clientes
Si tu aplicación no responde rápido pierdes clientesSi tu aplicación no responde rápido pierdes clientes
Si tu aplicación no responde rápido pierdes clientes
 
Curso: Publicando mi proyecto web en Github
Curso: Publicando mi proyecto web en GithubCurso: Publicando mi proyecto web en Github
Curso: Publicando mi proyecto web en Github
 
Drupal 7 para sitios de alto rendimiento y alta disponibilidad
Drupal 7 para sitios de alto rendimiento y alta disponibilidadDrupal 7 para sitios de alto rendimiento y alta disponibilidad
Drupal 7 para sitios de alto rendimiento y alta disponibilidad
 
This is Drupal! (Basics)
This is Drupal! (Basics)This is Drupal! (Basics)
This is Drupal! (Basics)
 
Django - Curso Básico - Principales Conceptos
Django - Curso Básico - Principales ConceptosDjango - Curso Básico - Principales Conceptos
Django - Curso Básico - Principales Conceptos
 
Django - Curso Básico - Principales Conceptos
Django - Curso Básico - Principales ConceptosDjango - Curso Básico - Principales Conceptos
Django - Curso Básico - Principales Conceptos
 
El iPad como herramienta de productividad profesional #Productivity #iPadProED
El iPad como herramienta de productividad profesional #Productivity #iPadProEDEl iPad como herramienta de productividad profesional #Productivity #iPadProED
El iPad como herramienta de productividad profesional #Productivity #iPadProED
 

Android código mejor guía

  • 1. No quiero vuestra basura en Android guía del autoestopista galáctico hacia un mejor código Antonio Nicolás Pina @ANPez Betabeers Murcia 2016
  • 2. Índice ● Herramientas ● HTTP ● Base de datos ● Custom views ● Usa tu cabeza
  • 4. Android Studio ● Es el IDE oficial. ● Además, desde finales de 2015, Eclipse no está soportado. ● La migración “no” es muy complicada. ● Gradle te simplificará mucho las cosas a largo plazo. ● ES ● EL ● IDE ● OFICIAL.
  • 5. Librerías ● Siempre que puedas, utiliza una librería externa. ● No copies el código de una librería en tu proyecto. Utiliza gradle. ● Organiza tus dependencias en bloques. Te ayudará a mantenerlas. ● Utiliza variables para las versiones.
  • 6. Librerías (y II) ● Una dependencia no se usa, se adopta. ○ Cuando importas a tu proyecto código externo, se convierte en tuyo. ○ Úsalo como si fuera tuyo. ○ Modifícalo como si fuera tuyo. ○ Publícalo como si fuera tuyo. ● Ten en mente siempre a NPM y left-pad. ● Usa-tu-cabeza.
  • 9.
  • 16.
  • 17. SQLite ● SQLite es leeeeeeeeeeeeeeeento. No lo uses en el hilo de la UI. ● NO utilices DatabaseOpenHelper como un God Object. ● Utiliza transacciones siempre que vayas a insertar datos. ● No hagas como yo hice, no intentes ser más listo que la plataforma.
  • 18.
  • 22.
  • 23.
  • 24. Vistas ● No crees vistas con muchos niveles de anidación, como en el ejemplo. ● Utiliza XML siempre que sea posible. ● No temas utilizar tamaños absolutos (android:layout_width=”50dp”). ● Piensa en cómo mejorar la legibilidad de tu XML. ● Utiliza nombres de ficheros que tengan sentido. Por ejemplo: ○ activity_main.xml ○ activity_list_elections.xml ○ activity_list_elections_cell.xml
  • 25. Define todo lo que puedas en el XML
  • 26.
  • 28.
  • 29. Intents Justificación: ¿Entonces por qué Bitmap es Parcelable?
  • 30. Intents ● ÚSALOS. ● No los uses. ● No confíes en singletons entre activities. ● Considera utilizar un Navigator.
  • 31.
  • 32. Conclusiones ● Párate a pensar 5 segundos antes de tomar una decisión. ● Utiliza las herramientas que la plataforma te provee. ● Busca si tu problema ya lo ha resuelto alguien y, si puedes, úsalo. ● Una dependencia no se usa, se adopta. Antonio Nicolás Pina @ANPez