39

Pasa de Junior a Senior en Android con Clean Architecture

17003Puntos

hace 4 años

Para crear un proyecto en Android, es muy importante que conozcas las bases suficientes para su desarrollo, así como algunas de las bibliotecas y componentes de arquitectura como Room, LiveData, ViewModel, etc. Conocer todo esto está muy bien, ya que te prepara para el siguiente paso que es saber cómo diseñar tu aplicación.

Diseñar una aplicación no es exclusivo de los diseñadores, también implica elaborar una solución bien estructurada y saber manejar los módulos y componentes de tu proyecto. Para ello, es importante que conozcas algo que seguramente te dará un gran valor agregado como desarrollador: implementar una arquitectura, y en específico, una que ha tomado gran relevancia con el paso de los años.

¿Qué es Clean Architecture?

Clean Architecture es un concepto que se hizo popular gracias a Robert C. Martin, conocido como “Uncle Bob”. Este concepto se basa en la premisa de estructurar el código de un proyecto en capas y cada una de estas se comunicarán con las capas más cercanas. Cada capa tiene una razón de ser y debe realizar tareas específicas.

Este diagrama contiene algunos de los términos que te ayudarán a familiarizarte con Clean Architecture:

vía The Clean Code Blog
  • Entidades: son reglas de negocio a nivel general, además contienen los Objetos de Transferencia de Datos (DTO). Al ser el nivel que está en el centro es el menos propenso a cambiar.
  • Casos de uso: también llamados “Interactors”, representan las reglas de negocio específicas del software. Esta capa está aislada de los cambios realizados en el framework como la base de datos o la interfaz de usuario.
  • Adaptadores de interfaz: convierten los datos de entidades y casos de uso a agentes externos como la interfaz de usuario o una base de datos. (en el caso de Android pueden ser los Presenters o ViewModels dependiendo del patrón de arquitectura que utilices).
  • Frameworks y controladores: son la capa más externa, que consiste en la interfaz de usuario, la base de datos, el cliente HTTP, etc. (en el caso de Android podemos encontrar por un lado a los Activities, Fragments, Dialogs y Views, mientras que por el otro lado están las implementaciones de bibliotecas como Retrofit, Room, etc).

¿Cuáles son sus beneficios?

  • Mayor independencia entre módulos: notarás que el nivel de acoplamiento entre vistas, lógica de negocio y framework se reduce considerablemente, por lo que intercambiar o incluso agregar piezas será más fácil.
  • Mejor estructura a nivel de proyecto: todos los módulos, paquetes y clases se volverán fáciles de ubicar, así como navegar por las funcionalidades.
  • Mayor comprobabilidad: Al ser independientes, será más rápido tanto identificar fallos como generar pruebas unitarias en cada capa de la arquitectura.

Si bien para proyectos sencillos no es recomendable ya que, en opinión de algunos, agrega complejidad de más, en los proyectos que he trabajado en los últimos años, aún el proyecto más pequeño estaba en constante crecimiento, lo que implicaba que llegaran nuevas funcionalidades, y por ende, crecían los módulos y clases, por lo que manejar una arquitectura se volvía crucial para manejar la organización del proyecto.

Conclusiones

Si estás interesado en ir al siguiente nivel para desarrollar aplicaciones Android con mejor estructura y calidad, te invito a tomar el Curso de Clean Architecture para Android, disponible ya mismo en Platzi.

¡Te espero en clase! Kudos 🚀

Mauricio
Mauricio
Mhodroid

17003Puntos

hace 4 años

Todas sus entradas
Escribe tu comentario
+ 2
Ordenar por:
11
8300Puntos

En pocas palabras un dev senior conoce de arquitectura más allá de poder usar librerías, y/o componentes.

7
8754Puntos

Muy interesante el articulo pero no responde la pregunta

2
20458Puntos
4 años

Pensé lo mismo. Como que el título iba para otro post y los confundió.

Pero si es interesante la publicación. Al menos aprendí algo que me era completamente desconocido.

4
17003Puntos
4 años

Hola Edwin e higoro! Gracias por leer el blog! Sí, creo que el título puede mejorarse 😅. Lo que busco dar a entender es que un dev Junior conoce cómo trabajar un framework, una biblioteca y las hace funcionar, pero un dev Senior debe ir más allá: optimizar código, trabajar o definir una arquitectura, hacer que el proyecto sea escalable, etc. Conociendo Clean Architecture, te da pauta para entender mejor cómo organizar tu proyecto.

4
37407Puntos
4 años

Siento que el titulo fue un poco de clickbait, pues entre buscando una comparativa entre desarrollador Junior y Senior para Android pero termine leyendo sobre un tema en especifico Clean Architecture… Algo mas Adecuado seria: “Aprende que es Clean Architecture para Android y para de ser junior a senior” es un titulo mas largo pero deja en claro el interes del post

1
17003Puntos
4 años

Hola Fernando! Gracias por leer mi blog! Trabajaré en los títulos de mis siguientes entradas 😅. Kudos 🚀

4
1984Puntos

Muy buen artículo, iré para allá en cuanto termine la ruta de android

2
17003Puntos
4 años

Excelente Charlie! Entonces te espero en clase próximamente.🚀

4
8588Puntos

Bastante interesante.

2
18073Puntos

¿Y entonces? ¿Qué distingue a un desarrollador Android Senior de un Junior?

4
20701Puntos
4 años

Considero que la capacidad de saber implementar arquitecturas, patrones de diseño y saber hacer sistemas escalables.

2
17003Puntos
4 años

Exactamente Ramiro! 🚀

2
18073Puntos
4 años

Suerte que le cambiaron el titulo al articulo. Ahora esta mas claro.

2

Qué tengo que aprender primero

4
17003Puntos
4 años

Hola Cristian! Si vas empezando, mi consejo es empezar por las bases (POO, control de versiones (hit), cursos básico para el lenguaje qué trabajas y Android). A la par, lee las buenas prácticas o guidelines relacionadas a los proyectos en dónde quieres trabajar, de esta forma empezarás sentando tus bases y buenas prácticas desde el inicio.

2
17003Puntos
4 años

Respecto a Platzi, te recomiendo iniciar con el nivel básico de la ruta de Desarrollo Android. Adicionalmente, en la primer clase de mi curso menciono algunos cursos más que te pueden interesar 😃

1
35525Puntos

Mas que senior me parece un DevOps Android