Enjoy A New Student Discount All 55,000 Courses on sale for Only $12.99

Ends in 05h 23m 49s

Refactorización de la aplicación

La primera parte de la optimización, será retirar todos los mensajes, y, moverlos al módulo Constantes; ya hemos puesto algunos, ahora lo completaremos. De paso, revisaremos la programación, para hacerla mas homogénea. Al final de cada etapa, utilizaremos test, para comprobar que todo sigue funcionando

Los entity’s

Lo primero que haremos, es modificar la interfaz de Modelo, para añadir el acceso a los IDs, lo que nos obliga a hacerlo generico, y quedará asi

Modelo.java

Esto nos obliga a tocar todos los ENTITYS

En Cine.java

Y revisamos todos los Entitys para hacer esta modificación, que consiste en añadir el genérico a la implementación, y devolver/recibir el id en estos métodos

La clase abstracta y los servicios

Empezamos la aplicacion implementando en nuestro servicio IServicio, pero, posteriormente, creamos IServicioMas, que era una clase abstracta de la que podían heredar los servicios, y lo que hacemos ahora es mejorar nuestra clase abstracta, y luego haremos que todos nuestros servicios la hereden

Primero, establecemos que la clase genérica que recibimos en T, solo puede ser alguna que provenga de Modelo, con lo que garantizamos que tiene los métodos getId y setId

Ahora, ya disponemos de acceso al id, por lo que podemos añadir código como

A la vez que cambio los mensajes, para leerlos todos del mismo sitio

Y asi, podeis revisar este programa en Github, en esta version y vereis que el disponer del acceso a id, me permite mejorar mas esta clase, y dejar el servicio, en mi caso, con un solo método en algunos CRUDs

Y a la vez que borraba los demas, he pasado el mensaje a que se lea de Constantes

Otra cosa que podemos hacer es borrar IServicioNew y pasar todo el código a IServicio, luego veréis que solo teneis que modificar la clase abstracta

Cuando deis este paso, podemos mejorar un poco la Interface, definiendo ya alli la validacion, y la caracteristica de final, que luego replicaremos en IServicioMas

Aunque, vais a tener que revisar los servicios Cine y Entrada, para que hereden de IServicioMas y revisar qué métodos os podéis ahorrar, que serán la mayoría, excepto el mantenimiento…pero dependerá de las opciones de vuestro aplicativo, en cualquier caso, aprovechad para sacar todos los textos al módulo de Constantes

Hemos cambiado la salida de los métodos Insert y Update para que devuelvan el objeto que acaban de insertar o actualizar. Eso nos obligará a modificar servicio, controlador y test, pero hemos pensado que era mejor hacerlo asi, y la refactorización no nos debe dar miedo….

Ahora ya podeis pasar los test que habiais hecho para la capa de Servicios, y todos deberan funcionar, dejando aparte pequeños detalles con algun nombre de método, y los mensajes, que ahora se comparan desde Constantes

Los controladores

Nuestra siguiente tarea, sera revisar los controladores, empezando por CineController

Como hemos añadido la validación @CheckCineValidation() en todos los sitios donde hemos podido, no es necesario verificar si podemos leer el registro, cosa que haciamos antes, por lo que podemos simplificar el codigo, por ejemplo, el LeerUno, nos ha quedado asi (con nuevo fondo de STS….)

En cambio, en leerTodos, solo he retocado matices (el nombre del metodo que antes era leerAll y ahora es listarTodos o el mensaje

Y asi continuamos; podeis ver el trabajo terminado, en GitHub, a partir de la revisión 050- ….

Y continuamos con el resto de controladores. Al final, nos acordaremos de pasar los test, en donde puede que tengamos que corregir textos….

Si antes habiamos escritos los test, y los habiamos pasado, el trabajo que queda, puede que sea pesado, pero en absoluto preocupante. Solo debemos lanzar los test, y si queréis ejecutar todos, nos basta con

Cada error que marque el test, deberéis comprobar si es un error real, o solo es necesario modificar el test. Y aunque esta refactorización nos provoca un cierto trabajo, tambien nos asegura clases mucho más estables.

Tdas estas modificaciones, las tenéis hechas en GitHub en la version 050-….

Conclusión

Todo este desarrollo lo tendréis explicado con más detalle en youTube, y, aunque es conveniente que intentéis escribirlo TODO vosotros, si queréis renunciar a ello, lo teneis tambien en GitHub

Este desarrollo esta hecho para disponer de un fuente para explicar otros temas, tal y como se indica en Visión de conjunto con Spring

En YouTube

Deja un comentario

/*Si te ha gustado el artículo
no dudes en compartirlo*/

Facebook
Twitter
LinkedIn

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies

Ver mi IP

Ver ip de mi máquina
tipo valor
Ip: 35.172.230.21
Proxy: 35.172.230.21
Remote host: ec2-35-172-230-21.compute-1.amazonaws.com
Remote port: 52730
** 35.172.230.21, 172.70.39.149