ScholarGate
Asistente

Calidad del Código y Refactorización

La calidad del código y la refactorización se refieren a la escritura de código fuente que sea legible, mantenible y bien estructurado, así como a técnicas disciplinadas para mejorar la estructura interna del código existente sin alterar su comportamiento externo.

Encontrar tema con PaperMindPróximamenteFind papers & topics
Tools & resources
Descargar diapositivas
Learn & explore
VídeoPróximamente

Definition

La refactorización es el proceso de cambiar un sistema de software de una manera que no altera su comportamiento observable, pero mejora su estructura interna, y la calidad del código es el grado en que el código fuente exhibe legibilidad, mantenibilidad y un diseño interno sólido.

Scope

Este tema abarca la legibilidad y la nomenclatura del código, la cohesión y el acoplamiento a nivel de código, los 'code smells' (malos olores en el código) que señalan problemas de diseño, el catálogo de refactorizaciones que preservan el comportamiento, el papel de las pruebas automatizadas en la refactorización segura, y las métricas de calidad del código y las herramientas de análisis estático utilizadas para evaluar y hacer cumplir los estándares.

Core questions

  • ¿Qué características hacen que el código fuente sea legible y mantenible?
  • ¿Cómo señalan los 'code smells' dónde se necesita refactorización?
  • ¿Cómo se puede mejorar la estructura sin cambiar el comportamiento o introducir defectos?
  • ¿Cómo se miden la calidad del código y su deterioro a lo largo del tiempo?

Key theories

Refactorización que preserva el comportamiento
La refactorización aplica transformaciones pequeñas y que preservan el comportamiento en secuencia, cada una verificada por pruebas, para mejorar la estructura de forma incremental y segura en lugar de mediante reescrituras grandes y arriesgadas.
Los 'code smells' como heurísticas de diseño
Síntomas superficiales recurrentes —métodos largos, código duplicado, clases grandes, 'envidia de características'— sirven como heurísticas que indican problemas de diseño más profundos y sugieren refactorizaciones específicas para remediarlos.

Clinical relevance

Una alta calidad del código reduce el costo de comprender y modificar el software, lo cual domina su costo total; la refactorización continua mantiene una base de código adaptable y es esencial para sostener el desarrollo ágil y controlar la deuda técnica.

Evidence & guidelines

ISO/IEC 25010 enmarca la mantenibilidad y otros atributos de calidad, y las herramientas de análisis estático aplican estándares de codificación y detectan 'malos olores' contra las reglas del proyecto.

History

Las prácticas de refactorización fueron sistematizadas por Fowler en 1999 y crecieron junto con el desarrollo guiado por pruebas y los métodos ágiles, que dependen de una reestructuración continua y protegida por pruebas; la artesanía del código limpio y el análisis estático automatizado reforzaron posteriormente la disciplina de la calidad del código.

Debates

Cuánto refactoring está justificado
Los equipos debaten cuán agresivamente refactorizar: las pequeñas mejoras continuas mantienen el código saludable pero consumen esfuerzo, mientras que posponer la reestructuración acumula deuda técnica; el equilibrio depende de la longevidad y la tasa de cambio del código.

Key figures

  • Martin Fowler
  • Kent Beck
  • Robert C. Martin
  • Steve McConnell

Related topics

Seminal works

  • fowler2018
  • mcconnell2004
  • martin2008

Frequently asked questions

¿La refactorización cambia lo que hace un programa?
No. Por definición, la refactorización preserva el comportamiento observable; reestructura los componentes internos para mejorar la legibilidad y el diseño. Se utilizan pruebas automatizadas para confirmar que el comportamiento no ha cambiado después de cada transformación.
¿Por qué invertir en la calidad del código si el software ya funciona?
La mayor parte del costo de un sistema proviene de su comprensión y modificación posteriores; el código de mala calidad ralentiza cada modificación futura y aumenta el riesgo de defectos, por lo que invertir en calidad rinde frutos durante toda la vida útil del software.

Methods for this concept

Related concepts