Code Monkey home page Code Monkey logo

moviedb's Introduction

MovieDB

Aplicación de Películas consumiendo la API de MovieDB

En esta aplicación decidí utilizar UIKit con MVVM. Para consumir los servicios utilicé los servicios de URLSession y para poder parsear las respuestas utilicé el JSONEncoder para poder casar la respuesta con mis modelos que implementan el protocolo Codable. Para las vistas utilicé UICollectionViews con Orthogonal layouts. Esto lo hice para poder tener el efecto de collectionView vertical con secciones horizontales. La lógica de negocio la manejo desde los View Models. Para descargar imágenes utilizo el método de downloadTask del URLSession y almaceno esto dentro de un NSCaché para que no se esté pidiendo constantemente.

Para la parte de la búsqueda utilicé un search controller y un segmented control. En esta búsqueda filtro tanto por sección como por coincidencias del título con el texto que se encuentra en el barra.

No pude realizar pruebas unitarias y de UI. Pero si tuviera oportunidad de agregarlas haría pruebas con mocks de respuestas reales. Haría pruebas para las búsquedas y para ver que si se están parseando correctamente los datos y prevenir alguna falla del lado del cliente móvil.

Para el funcionamiento offline me faltó persistirlo en una base de datos local. Mi opción más fiable sería almacenarlo en Core Data ya que el sistema te provee esta herramienta y es fácil de hacer migraciones en ella. Otra alternativa podría ser sqlite o realm.

Clases:

Servicios: ServiceAPI: clase en donde se realizan los servicios de descarga de feeds de popular, top rated y upcoming. Además de contar con el servicio de descarga de imágenes. Vistas: HomeViewController: Vista en donde se dibujan los resultados principales en un collectionview ortogonal. La barra de navegación cuenta con una barra de búsqueda. MovieDetailView: Pantalla modal construida en SwiftUI que muestra a detalle una película. Modelos: Movie: Modelo de una pelicula. SearchResult: Modelo del resultado que regresa la llamada de consulta del feed. Section:La sección con sus elementos a popular. View Models: HomeViewModel: View model que se encarga de la lógica de negocio MovieDetailViewModel: view model que contiene la película a consultar

  1. En qué consiste el principio de responsabilidad única? Cuál es su propósito?

Es el principio que indica que un módulo/clase solo debe de ser responsable de una tarea dentro de una aplicación. Es decir, una vista no debe de preocuparse por la lógica de negocio, así como un view model no debe de encargarse de tareas de UI.

  1. Qué características tiene, según su opinión, un “buen” código o código limpio

Un buen código es aquel que contiene documentación adecuada, cumple con estándares acordados por la comunidad (LINT), y está perfectamente fragmentado en pequeñas porciones de código para que sea más fácil hacer pruebas sobre él.

moviedb's People

Contributors

ernestosk13 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.