Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Unclean Architecture in Android - Droidcon Madrid 2016

Unclean Architecture in Android - Droidcon Madrid 2016

Las arquitecturas en general - y Clean en particular - se implementan en ocasiones de forma mecánica a partir de lo visto en ejemplos, blog posts, u otro tipo de material, sin tener en cuenta que problemas intentaba resolver el autor y cuales son los nuestros. En el proceso intentamos forzar que partes de nuestras aplicaciones cumplan con las pautas que hemos visto, obviando la solución más pragmática - saltarnos esas pautas -, y cayendo en el overengineering.

En esta charla veremos como abordamos esta situación en el caso concreto de Redbooth, a través de la implementación de 4 piezas de la aplicación:

La capa de lógica
El modo offline
El chat
El navegador

¡Advertencia! No apta para ingenieros con el corazón sensible y talibanes del SOLID. Puede que durante la charla se viole algún principio y se sugieran ideas subversivas a favor de no hacer testing.

Rubén Serrano

July 15, 2016
Tweet

More Decks by Rubén Serrano

Other Decks in Programming

Transcript

  1. Legiones de desarrolladores nos enfrentamos al demoledor efecto psicológico que

    este sujeto nos Qué JMPergar no repita ni una sola vez más su charla de Clean Architecture
  2. View Interactor Interactor Entities … Data Source … Data Source

    Presenter View Interactor Interactor Entities
  3. 
 public class AnyActivity {
 private final static String ARG_ID

    = "argId"; 
 public static void launch(int id) { Intent intent = new Intent(context, AnyActivity.class);
 intent(ARG_ID, id);
 context.startActivity(intent);
 }
 }
  4. View Presenter Navigator Destiny Info Navigation Command Navigation Logic Real

    Time Presenter Offline Service Offline Command Entity Database Synchronizer API Alarm Interactor Entities Database Logic Command API Database
  5. Interactor View Model Entities API Database Presenter Server Id Local

    Id Server Id Local Id Local Id Why not only server Id?