feresr / RxWeather

Personal pet project aimed to get familiar with the following android specific frameworks/libraries/tools: AndroidRx, RxJava, Dagger2, RetroLambda, Retrofit2
14 stars 1 forks source link

Pregunta #1

Closed DayronIG closed 8 years ago

DayronIG commented 8 years ago

Amigo excelente proyecto te felicito me quito el sombrero .

Me parece que el proyecto https://github.com/feresr/RxWeather , es un excelente ejemplo de mvp, pero tengo una duda estoy trabajando basado en la estructuración de tu proyecto . y la duda es la siguiente:

ForecastIOEndpoints. Esta clase para mi contiene mas de un modelo es decir tiene llamados a varios repositorios , ejemplo ejecuto un servicio api que me retorna los usuario, otro que me retorna las transacciones, otro que me retorna los sitios que ha frecuentado, y otro que retorna las citas que tiene programada. Mi pregunta es la siguiente todo debería quedar en repository o le creo un repository a cada uno. Estoy tratando de poder estructurar mi proyecto y lo que expones me parece uno de los mejores ejemplos que me he encontrado

Feliz dia desde Colombia.

feresr commented 8 years ago

Hola @DayronIG ! Primero que nada, muchas gracias por el cumplido, pero la verdad es que no puedo tomar el crédito por la arquitectura de esta aplicación, me basé en el siguiente repositorio de @Android10 https://github.com/android10/Android-CleanArchitecture Traté de simplificarlo y adaptarlo a mis necesidades. Como a vos, me pareció una excelente arquitectura en la cual basarme.

Respecto a tu pregunta, creo que es muy buena, al parecer, la única responsabilidad de un 'Repository' es decidir qué 'data source' utilizar (cloud, disk u otro), teniendo esto en mente, no parece tener mucho sentido crear más clases que hagan lo mismo. Sin embargo, la elección del nombre UserDataRepository en el proyecto de @Android10 sugiere que habría de crear nuevos 'Repositories' por cada modelo que haya que traer desde el servidor. En su proyecto solo trabaja con un solo modelo (users) por lo tanto no puedo asegurar esto. No estoy seguro de que ventaja nos traeria. Tal vez crear nuevos [MODEL]DataRepository sea solamente para mejorar la modularidad del proyecto.

Creo que si haces esta misma pregunta en el proyecto de @Android10 vas a obtener una mejor respuesta. Haceme saber si lo hacés, me interesa lo que pueda llegar a decir.

PS: Solo de curiosidad, Quisiera saber como diste con mi repositorio?

Saludos desde Argentina!

DayronIG commented 8 years ago

Amigo mil gracias que excelente dato, Igual te felicito por conservar lo limpio de la arquitectura éxitos... Te estaré preguntado si no te molesta .te agregare al gmail.

Exitos

android10 commented 8 years ago

Buenas! Primero que todo, gracias por el mention. Con respecto a la pregunta, yo si que uso un repositorio por cada modelo de datos, principalmente para abstraerme de los orígenes de datos (ya sea si voy a disco, red o cache). La idea es tener clases que cumplan una sola responsabilidad, no quiero que mi repositorio, me devuelva mil cosas distintas. De esta manera puedo desacoplar y testear mi código mas fácilmente y no termino con "God" clases de 50 mil líneas que luego se vuelven difíciles de mantener.

DayronIG commented 8 years ago

Mil gracias me queda super claro, disculpen la pregunta pero si quería tenerlo del todo claro ,no se que tan estupida halla sido mi pregunta .

android10 commented 8 years ago

@DayronIG no existen preguntas estúpidas! Preguntando y compartiendo es cuando mas se aprende. Suerte con tu proyecto. Saludos.

feresr commented 8 years ago

Gracias por la clarificación @Android10! Suerte a ambos.