Newsletter para devsEntra
Audio premium

WRP 18. Refactorizar una aplicación legacy (Parte 1)

Guía de primeros pasos para refactorizar una aplicación de código legado.

Duración total: 00:37:38

Escúchalo desde tu podcatcher

Acceso 100% online

Descripción del episodio

Ponemos a prueba un script que promete hacernos la vida más fácil para crear aplicaciones web.

Muchas gracias a todos los que habéis asistido al directo, en muy poco tiempo estará disponible en la Zona Premium. Estoy buscándole un nombre a estas sesiones y pronto llegará el “live coding”.

Las secciones Noticias noticiosas y Un paseo por Github solo están disponibles si eres suscriptor.

Primeros pasos de la refactorización

Planteamos hoy una primera parte de una miniserie de episodios dedicados a refactorizar una aplicación “imaginaria” de alto valor para una empresa, pero a la que nadie quiere hincar el diente por la dificultad que arrastra ahcer cualquier modificación.

Nos basamos en la historia montada en los últimos capítulos de Pro PHP Refactoring. Un libro antiguo que he redescubierto hace poco y que creo contiene las bases para gestionar la programación de nuestras aplicaciones con buenas prácticas.

Eso si, matizaremos varios aspectos a lo largo de nuestro recorrido, actualizando lo que cuenta el manual para aprovechar las nuevas librerías.

Nuestro caso de uso es algo como esto

Tenemos una aplicación para gestionar un listado de productos. Los productos se crean, se editan y se borran. Toda la empresa depende de este sistema porque gestiona dos cosas esenciales: la disponibilidad del producto y el precio

No son productos complejos, con muchos atributos. Hay más de 100 mil productos.

PHP 5, MySQL y Apache

Nos piden incluir modificaciones en la forma de establecer los precios de los productos.

¿Quién se atreve? Nadie, todos los valientes echaron a correr :)

Gran bola de lodo

La aplicación es una gran bola de lodo, una Big ball of Mud. Código que mezcla llamadas a la base de datos, generación de plantillas y control de accesos sin ningún rigor ni “separación de intereses”.

Nuestro destino es tener una aplicación que siga la arquitectura “Modelo-Vista-Controlador” (gráfico). Hay mejores opciones en la actualidad, pero conseguir tener esa estructura sería un logro.

La importancia del testing

Ya hablamos de él en el episodio 59. En nuestro caso necesitamos crear tests de regresión funcionales. Esto es, probar, como si fuéramos un usuario que entra en el navegador, a ejecutar las acciones básicas del sistema: crear, editar, borrar y leer los productos. Pero todo esto de forma automática.

Aquí tenemos una lista de recursos que nos puede ayudar:

[Solo disponible si eres suscriptor]

Un camino largo pero muy provechoso

Acabamos el episodio con el sistema instalado en local y entendiendo un mejor la colección de recursos que debemos conocer antes de emprender este viaje:

  • Control de versiones Git
  • Instalación en local del entorno con Docker, MAMP, WAMP…
  • Ejecución de tests funcionales (o de aceptación)
  • Mucha ilusión :)

Podrás escuchar a:

Imagen de Daniel Primo

Daniel Primo

CEO en pantuflas de Web Reactiva. Programador y formador en tecnologías que cambian el mundo y a las personas. @delineas en twitter y canal @webreactiva en telegram

¿Se puede aprender a programar escuchando formación en audio?

El sector del desarrollo es exigente y necesita de personas como tú bien informadas de las opciones existentes para crear aplicaciones web.

Además es la mejor forma para conocer las experiencias de otros y aprender de sus éxitos y errores en programación.

Imagen para ¿Se puede aprender a programar escuchando formación en audio?

Descubre todo lo que puedes conseguir sucribiéndote a Web Reactiva

Contenido nuevo todas las semanas

Una comunidad de developers colegas en telegram

Desafíos y retos de programación para que mejores tus habilidades

400 horas de contenido en audio y vídeo

Entrevistas y masterclass en directo con los/las mejores profesionales

Precio

19€Matrículaplus13€Al mes

  • Contenido disponible 24/7
  • Audios y videos
  • Retos y desafíos
  • Todo el código descargable
  • Comunidad de developers
  • Acceso premium completo