Giter Club home page Giter Club logo

movieflix-sb's Introduction

MovieFlix

N|Solid

Build Status

El presente proyecto muestra un listado de pelicula con su respectivo detalle. Ademas, de su respectivo trailer. Se lista algunas de las características del proyecto.

  • Xcode 13.3
  • Lenguaje Swift
  • Arquitectura MVVM
  • Swift Package Manager
  • Kingfisher
  • Youtube Player

Capas

  • App: Contiene los archivos relacionados al ciclo de vida del App
  • Model: Contiene las entidades que forman parte del negocio.
  • View: Contiene las storyboards, vistas customizadas, celdas que se utilizan en el proyecto.
  • ViewModel: Representa la abstracción de la vista que expone métodos y propiedades públicas. Lo más característico es que dispone de un binder que se encarga de comunicar la vista con las propiedades enlazadas en el view model. Para nuestro caso particular solo hemos utilizado para la comunicacion a los clousures.
  • Controllers: Contiene los distintos controladores que hacen referencia a las pantallas del app.
  • Network: Representa la capa de red donde se declara los metodos para consumir los servicios web. En nuestro caso estamos utilizando UrlSession para la conexion a los servicios.
  • Resources: Contiene el assets del proyecto
  • Util: En esta parte estan las extensiones y un archivo para almacenar constantes.
  • Support: Contiene archivo info.plist

Responsabilidad

A continuacion se describen algunos elementos del proyecto

  • PlayerView - Es la vista que se encarga de mostrar el reproductor de videos
  • MovieTableViewCell - Contiene datos que se muestran en la celda del listado de peliculas
  • MovieViewModel - Contiene el viewmodel asociado a las peliculas
  • TopRatedViewController: Contiene el listado de peliculas de tipo Top Rated
  • PopularViewController: Contiene el listado de peliculas de tipo Popular
  • UpcomingViewController: Contiene el listado de peliculas de tipo Upcoming
  • DetailViewController: Contiene el detalle de la pelicula seleccionada, muestra un preview image, resumen y una pequeña lista de peliculas relacionadas si aplicara.
  • PlayerViewController: Contiene las vistas y propiedades del reproductor de videos
  • RelatedMovieViewController: Contiene la vista de peliculas relacionadas a la que hemos seleccionado
  • APIManager: Contiene los metodos que consumen los servicios web para las peliculas, listado, detalle, busqueda
  • Networkable: Define el protocolo base solicitar y obtener la data de los servicios web
  • Constants: Contiene los valores definidos a utilizar dentro del app desde este archivo centralizado.

SOLID y Código Limpio

  • Principio de simple responsabilidad : Una clase debe tener una razón, y sólo una, para cambiar. Es decir, una clase solo debe tener una responsabilidad. Este principio nos ayuda a indentificar ciertos casos como los siguientes: La cantidad de metodos publicos es demasiada. La clase en cuestion es muy complicada de testear. La cantidad de imports y/o la cantidad de lineas de codigo que tiene la clase esta desbordando. Este principio nos ayudara a corregir esta parte de nuestro codigo y mientras tengamos un proyecto vivo (que este sometido a cambios) siempre es posible en algun momento incurrir en alguna practica que genere un caso que pueda alterar el buen funcionamiento de nuestro proyecto.
  • Codigo Limpio : En mi opinion deberia reflejarse lo siguiente. Al momento de diseñar los casos de prueba permite salvaguardar la calidad de codigo implementado. Tambien, permite refinar la cantidad de codigo escrito. Es facil de leer y entender lo que permite un desarrollo más rápido y escalable de forma segura. Finalmente, para que todo esto sea exitoso se debe contar con el tiempo necesario para poder ejecutar todo este proceso que proviene de una buena practica. La parte o area tecnica debe ser responsable de velar por este cumplimiento de manera natural y estando plenamente convencido de sus beneficios a corto y largo plazo.

movieflix-sb's People

Contributors

rapser 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.