Legacy Code
4/5
()
Información de este libro electrónico
¿Cómo mejorar de forma sencilla y poco a poco código que ha crecido demasiado rápido y quizá de forma desorganizada? ¿Cómo modernizar una aplicación "heredada"? En catorce pasos, Rafael Gómez Blanes muestra un método fácil con el que "modernizar" con el menor esfuerzo posible un proyecto software que presenta déficit de buen diseño y con demasiada deuda técnica.
Por el autor entre otros de El Libro Negro del Programador, The Coder Habits y El Libro Práctico del Programador Ágil, entre otros.
Rafael Gómez Blanes
Rafael Gómez Blanes es Ingeniero Informático por la Universidad de Sevilla (España). Infoemprendedor, ha trabajado en proyectos software internacionales relacionados con el sector eléctrico. Desarrollador profesional desde el año 1998, es experto en clean code y todas aquellas prácticas metodológicas que incrementan la productividad, mejorando la calidad del software generado. Evangelista de software ágil, dirige actualmente un equipo de desarrollo en una compañía de ingeniería realizando productos para la gestión de smart meters y su despliegue en la nube en modo SaaS (software as a service).
Lee más de Rafael Gómez Blanes
La Era del Código Calificación: 5 de 5 estrellas5/5El Libro Negro del Programador Calificación: 4 de 5 estrellas4/5El Libro Práctico Del Programador Ágil Calificación: 5 de 5 estrellas5/5El Método Lean MP: Gestiona tu proyecto emprendedor de forma sencilla, simple y eficaz mediante la Matriz de Procedimientos Calificación: 5 de 5 estrellas5/5De qué hablo cuando hablo de programar (volumen 2) Calificación: 0 de 5 estrellas0 calificacionesDe qué hablo cuando hablo de programar (volumen 1) Calificación: 4 de 5 estrellas4/5El Arte del Emprendedor Digital Calificación: 0 de 5 estrellas0 calificacionesBitcoin Calificación: 0 de 5 estrellas0 calificacionesLas Doce Claves Calificación: 0 de 5 estrellas0 calificaciones
Relacionado con Legacy Code
Libros electrónicos relacionados
The Coder Habits: Los 39 Hábitos Del Programador Profesional Calificación: 5 de 5 estrellas5/5De qué hablo cuando hablo de programar (volumen 1) Calificación: 4 de 5 estrellas4/5Ingeniería y Arquitectura del Software Calificación: 0 de 5 estrellas0 calificacionesHTTP - Lo mínimo que todo desarrollador web debe saber Calificación: 4 de 5 estrellas4/5Desarrollo de Software: Requisitos, Estimaciones y Análisis Calificación: 0 de 5 estrellas0 calificacionesProgramación y Lógica Proposicional Calificación: 4 de 5 estrellas4/5Desarrollo de Software Calificación: 0 de 5 estrellas0 calificacionesFundamentos de Programación y Bases de Datos Calificación: 0 de 5 estrellas0 calificacionesCurso de Ingeniería de Software Calificación: 4 de 5 estrellas4/5Scrum - ¡Guía definitiva de prácticas ágiles esenciales de Scrum! Calificación: 4 de 5 estrellas4/5El Proceso de Desarrollo de Software Calificación: 0 de 5 estrellas0 calificacionesCómo construir Microservicios : Los diez principales trucos para modelar, integrar y desplegar microservicios Calificación: 4 de 5 estrellas4/5Diseño de Software Calificación: 0 de 5 estrellas0 calificacionesAprender Javascript Avanzado con 100 ejercicios prácticos Calificación: 5 de 5 estrellas5/5Aprendizaje automático y profundo en python: Una mirada hacia la inteligencia artificial Calificación: 0 de 5 estrellas0 calificacionesLa Guía Definitiva Para Desarrolladores De Software: Trucos Y Conseños Calificación: 1 de 5 estrellas1/5Diseño de arquitecturas .NET orientadas a microservicios Calificación: 3 de 5 estrellas3/5Aprende programación de computadoras Calificación: 5 de 5 estrellas5/5Backbone JS. JavaScript Framework. 2ª Edición Calificación: 0 de 5 estrellas0 calificacionesEstructuras de datos orientadas a objetos Calificación: 0 de 5 estrellas0 calificacionesJavaScript Una Guía de Aprendizaje para el Lenguaje de Programación JavaScript Calificación: 3 de 5 estrellas3/5Metodologías ágiles para el desarrollo de software Calificación: 0 de 5 estrellas0 calificacionesEl Proceso de Desarrollo de Software: 2ª Edición Calificación: 0 de 5 estrellas0 calificacionesAutomatización de Tests de Software Con Selenium Calificación: 0 de 5 estrellas0 calificacionesUF2406 - El cliclo de vida del desarrollo de aplicaciones Calificación: 0 de 5 estrellas0 calificacionesProgramación en C# para Principiantes Calificación: 0 de 5 estrellas0 calificacionesAprender React con 100 ejercicios prácticos Calificación: 0 de 5 estrellas0 calificacionesAprende a Programar Swift - Tercera Edición Calificación: 0 de 5 estrellas0 calificacionesAprende a programar con pseudocódigo, diagramas de flujo y ejercicios de ejemplo resueltos en C: Algoritmos y lógica para aprender programación desde cero Calificación: 0 de 5 estrellas0 calificacionesDesarrollo de aplicaciones web con Jakarta EE Calificación: 0 de 5 estrellas0 calificaciones
Programación para usted
VBA Excel Modelo de Objetos Calificación: 3 de 5 estrellas3/5Python Paso a paso: PROGRAMACIÓN INFORMÁTICA/DESARROLLO DE SOFTWARE Calificación: 4 de 5 estrellas4/5VBA Excel Guía Esencial Calificación: 5 de 5 estrellas5/5Python para principiantes Calificación: 5 de 5 estrellas5/5Aprender a programar con Excel VBA con 100 ejercicios práctico Calificación: 5 de 5 estrellas5/5Excel de la A a la Z: El Manual Práctico Paso a Paso de Microsoft Excel para Aprender Funciones Básicas y Avanzadas, Fórmulas y Gráficos con Ejemplos Fáciles y Claros Calificación: 0 de 5 estrellas0 calificacionesGuíaBurros Microsoft Excel: Todo lo que necesitas saber sobre esta potente hoja de cálculo Calificación: 4 de 5 estrellas4/5Curso básico de Python: La guía para principiantes para una introducción en la programación con Python Calificación: 0 de 5 estrellas0 calificacionesPython a fondo Calificación: 5 de 5 estrellas5/5Aprender PHP, MySQL y JavaScript Calificación: 5 de 5 estrellas5/5Aprende programación Python: python, #1 Calificación: 0 de 5 estrellas0 calificacionesLinux Essentials: una guía para principiantes del sistema operativo Linux Calificación: 5 de 5 estrellas5/5Arduino. Edición 2018 Curso práctico Calificación: 4 de 5 estrellas4/5El gran libro de Python Calificación: 5 de 5 estrellas5/5Lógica de programación Calificación: 0 de 5 estrellas0 calificacionesInteligencia artificial para programadores con prisa Calificación: 5 de 5 estrellas5/5Arduino. Trucos y secretos.: 120 ideas para resolver cualquier problema Calificación: 5 de 5 estrellas5/5Tablas dinámicas y Gráficas para Excel: Una guía visual paso a paso Calificación: 0 de 5 estrellas0 calificacionesArduino para Principiantes Calificación: 4 de 5 estrellas4/5HTML para novatos Calificación: 5 de 5 estrellas5/5Aprende a Programar en C++ Calificación: 5 de 5 estrellas5/5Introducción al Uso de Formularios (UserForms) en VBA Calificación: 3 de 5 estrellas3/5Fundamentos De Programación Calificación: 5 de 5 estrellas5/5Aprender React con 100 ejercicios prácticos Calificación: 0 de 5 estrellas0 calificacionesTablas dinámicas para todos. Desde simples tablas hasta Power-Pivot: Guía útil para crear tablas dinámicas en Excel Calificación: 0 de 5 estrellas0 calificacionesCurso de Programación y Análisis de Software Calificación: 4 de 5 estrellas4/5JavaScript: Guía completa Calificación: 4 de 5 estrellas4/5Bases de Datos con MySQL Calificación: 4 de 5 estrellas4/5Lógica de programación: Solucionario en pseudocódigo – Ejercicios resueltos Calificación: 4 de 5 estrellas4/5
Comentarios para Legacy Code
1 clasificación0 comentarios
Vista previa del libro
Legacy Code - Rafael Gómez Blanes
{ Legacy Code }
Cómo modernizar en catorce pasos código heredado
o proyectos software que han crecido demasiado rápido
Rafael Gómez Blanes
Primera edición - Diciembre de 2020 - #01#
Rafael Gómez Blanes - Copyright © 2020
Todos los derechos reservados
Legacy Code
Cómo modernizar en catorce pasos código heredado
o proyectos software que han crecido demasiado rápido
www.rafablanes.com
ISBN: 9798574200155
Editado por Hub de Libros
www.hubdelibros.com
A mis padres, hermana y mis hijas, Luna y Beatriz
A mi pareja Mercedes
A todos aquellos autores que tanto me han enseñado
{ Introducción }
―
Lo he visto en demasiadas ocasiones: proyectos y aplicaciones software que han crecido de un modo descontrolado hasta que llega el punto en que modificar algo, añadir una nueva funcionalidad o depurar un simple error, se convierte en una tortura y una inversión demasiado alta en tiempo (= dinero).
Por extraño que parezca, en software esto es relativamente normal que ocurra.
Y también he visto lo contrario, afortunadamente: sistemas de gran tamaño que han sido bien diseñados desde el comienzo, con numerosas iteraciones de limpieza y mejora de diseño y que hoy día están en producción en diferentes clientes con un mínimo mantenimiento, presentando una facilidad pasmosa de añadir nueva funcionalidad o modificar la existente.
¿Cómo se llega a la primera situación y qué hay que hacer para conseguir la segunda?
Las buenas prácticas de desarrollo de software están bien descritas en nuestra industria desde hace mucho tiempo y he hablado de ellas en varios de mis libros (como «El Libro Negro del Programador», «El Libro Práctico del Programador Ágil», «The Coder Habits», etc), existiendo además autores mucho más reputados que yo y a los que sigo, admiro y recomiendo.
Las razones por las que un proyecto software se corrompe o termina siendo algo de tipo espagueti, siempre son múltiples, y no vamos a caer en el error de demonizar al desarrollador (junior o sénior) encargado de ese resultado algo desastroso, ni tampoco a las condiciones de trabajo que impone el responsable del proyecto (que tiene sus propias presiones), porque la experiencia me ha demostrado que todo cuenta y que tan importante es la habilidad y buena intención del programador como el entorno organizativo para conseguir un resultado de calidad.
Con el tiempo, y después de haber trabajado en más proyectos de los que puedo recordar, se va desarrollando cierta intuición, de modo que sabes las consecuencias sutiles a largo plazo de hacer algo de un modo concreto, como indican perfectamente los «bad smells» (malos olores) en el código.
Conoces de primera mano que lo que mata cualquier proyecto software es ir dejando de lado ese tipo de detalles que, con el tiempo, se van acumulando de tal forma que su efecto negativo termina siendo exponencial aumentando el volumen de una gran bola de nieve que tarde o temprano caerá por su propio peso, esto es: proyectos inmantenibles que se tiran a la basura (y que en el mejor de los casos se hacen de nuevo), la imposibilidad de introducir cambios o que presentan errores por todos lados.
Si en tu código… existen funciones, métodos y clases demasiado largos, no se huele nada que implique cierto diseño, no se aprecian claramente los principios de desarrollo S.O.L.I.D., ni inyección de dependencias, todo parece demasiado acoplado (dependencias) y hasta es imposible siquiera plantear una batería mínima de tests unitarios, corregir un error es un suplicio, te encuentras con demasiadas sentencias «if, if, if» anidadas y comentarios aclaratorios por todos lados y hasta con código muerto, por poner solo algunos ejemplos, entonces lo que tienes entre manos es una patata caliente si lo que se quiere es mantener un proyecto así y añadir más funcionalidad a un coste razonable.
Cuando un edificio está en ruinas, difícil (y costoso) reformarlo. No obstante, en software podemos mejorar el edificio y hasta conseguir que resplandezca de nuevo si es necesario y si se ha evaluado que merece la pena.
Hay ocasiones aceptables en las que existe un crecimiento descontrolado y poco riguroso de una aplicación: cuando se trabaja en un prototipo, cuando hay que correr por urgencias del negocio (sabiendo que habrá tiempo más adelante para mejorar esto y aquello), o sencillamente cuando estás jugando en tu tiempo libre y tan solo quieres experimentar y aprender algo nuevo.
No obstante, llegados al punto anterior en el que existe algo que no está del todo bien hecho y que tiene que seguir adelante como