Legacy Code
()
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
El Libro Práctico Del Programador Ágil Calificación: 5 de 5 estrellas5/5El Libro Negro del Programador Calificación: 4 de 5 estrellas4/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/5La Era del Código Calificación: 0 de 5 estrellas0 calificacionesEl Arte del Emprendedor Digital Calificación: 0 de 5 estrellas0 calificacionesDe 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/5Bitcoin Calificación: 0 de 5 estrellas0 calificacionesLas Doce Claves Calificación: 0 de 5 estrellas0 calificaciones
Relacionado con Legacy Code
Libros electrónicos relacionados
De qué hablo cuando hablo de programar (volumen 1) Calificación: 4 de 5 estrellas4/5De qué hablo cuando hablo de programar (volumen 2) Calificación: 0 de 5 estrellas0 calificacionesThe Coder Habits: Los 39 Hábitos Del Programador Profesional Calificación: 5 de 5 estrellas5/5AngularJS: Conviértete en el profesional que las compañías de software necesitan. Calificación: 4 de 5 estrellas4/5Diseño de Software Calificación: 0 de 5 estrellas0 calificacionesDesarrollo de Software Calificación: 0 de 5 estrellas0 calificacionesLa Guía Definitiva Para Desarrolladores De Software: Trucos Y Conseños Calificación: 4 de 5 estrellas4/5Aprende a Programar Swift Calificación: 0 de 5 estrellas0 calificacionesBackbone JS Calificación: 0 de 5 estrellas0 calificacionesAprender React con 100 ejercicios prácticos Calificación: 0 de 5 estrellas0 calificacionesDiseño de arquitecturas .NET orientadas a microservicios Calificación: 3 de 5 estrellas3/5Ingeniería y Arquitectura del Software Calificación: 0 de 5 estrellas0 calificacionesDesarrollo de Software: Requisitos, Estimaciones y Análisis Calificación: 0 de 5 estrellas0 calificacionesCurso de Ingeniería de Software Calificación: 4 de 5 estrellas4/5Aprender Javascript Avanzado con 100 ejercicios prácticos Calificación: 5 de 5 estrellas5/5Aprender VueJS con 100 ejercicios prácticos Calificación: 0 de 5 estrellas0 calificacionesAprende a Programar Swift - Tercera Edición Calificación: 0 de 5 estrellas0 calificacionesEstructuras de datos orientadas a objetos Calificación: 0 de 5 estrellas0 calificacionesCalidad en el desarrollo de software Calificación: 0 de 5 estrellas0 calificacionesProgramación Orientada a Objetos en JAVA Calificación: 0 de 5 estrellas0 calificacionesDesarrollo Web en Java Calificación: 3 de 5 estrellas3/5El Proceso de Desarrollo de Software: 2ª Edición Calificación: 0 de 5 estrellas0 calificacionesHTTP - Lo mínimo que todo desarrollador web debe saber Calificación: 5 de 5 estrellas5/5JEE 7 a Fondo: Diseño y desarrollo de aplicaciones Java Enterprise Calificación: 0 de 5 estrellas0 calificacionesConexión SQL SERVER & C# (Manual para principiantes) Calificación: 1 de 5 estrellas1/5Desarrollo de Software Ágil. Extremme Programming y Scrum Calificación: 4 de 5 estrellas4/5PHP 8: Curso práctico de formación Calificación: 0 de 5 estrellas0 calificacionesEl Proceso de Desarrollo de Software Calificación: 0 de 5 estrellas0 calificacionesProgramación Java - Una Guía para Principiantes para Aprender Java Paso a Paso Calificación: 3 de 5 estrellas3/5Las Doce Claves Calificación: 0 de 5 estrellas0 calificaciones
Programación para usted
HTML para novatos Calificación: 5 de 5 estrellas5/5Python Paso a paso: PROGRAMACIÓN INFORMÁTICA/DESARROLLO DE SOFTWARE Calificación: 4 de 5 estrellas4/5Aprende a programar: Crea tu propio sitio web Calificación: 4 de 5 estrellas4/5GuíaBurros Microsoft Excel: Todo lo que necesitas saber sobre esta potente hoja de cálculo Calificación: 4 de 5 estrellas4/5Aprende a programar en C# Calificación: 5 de 5 estrellas5/5Python para principiantes Calificación: 5 de 5 estrellas5/5Lógica de programación: Solucionario en pseudocódigo – Ejercicios resueltos Calificación: 4 de 5 estrellas4/5VBA Excel Guía Esencial Calificación: 5 de 5 estrellas5/5Python Aplicaciones prácticas Calificación: 4 de 5 estrellas4/5El gran libro de Python Calificación: 5 de 5 estrellas5/5Arduino. Edición 2018 Curso práctico Calificación: 4 de 5 estrellas4/5Python a fondo Calificación: 5 de 5 estrellas5/5Aplicaciones web con Php Calificación: 5 de 5 estrellas5/5Ortografía para todos: La tabla periódica de la ortografía Calificación: 5 de 5 estrellas5/5Aprender a programar con Excel VBA con 100 ejercicios práctico Calificación: 5 de 5 estrellas5/5Arduino. Trucos y secretos.: 120 ideas para resolver cualquier problema Calificación: 5 de 5 estrellas5/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 calificacionesArduino para Principiantes Calificación: 4 de 5 estrellas4/5Aprende a Programar en C++ Calificación: 5 de 5 estrellas5/5Python 3. Curso Práctico: Ventas y marketing Calificación: 4 de 5 estrellas4/5Fundamentos De Programación Calificación: 5 de 5 estrellas5/5Curso de Programación y Análisis de Software Calificación: 4 de 5 estrellas4/5Programación en Visual Basic (VB): DEL ANÁLISIS del Problema al Programa Calificación: 4 de 5 estrellas4/5Aprende a Programar con Java Calificación: 4 de 5 estrellas4/5Fundamentos de programación: un enfoque práctico Calificación: 5 de 5 estrellas5/5Programación Orientada a Objetos Calificación: 3 de 5 estrellas3/5Linux Essentials: una guía para principiantes del sistema operativo Linux Calificación: 5 de 5 estrellas5/5Microsoft C#. Curso de Programación. 2ª Edición Calificación: 4 de 5 estrellas4/5
Comentarios para Legacy Code
0 clasificaciones0 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