2.2.6 Refactorización Flashcards
(28 cards)
¿Qué es la refactorización?
Refactorizar el código es cambiar el código con dos restricciones cruciales: Los cambios hacen que el código sea más fácil de entender y, por tanto, más barato de modificar. Los cambios nunca modifican la funcionalidad, el comportamiento observable, del código.
¿Por qué se hace refactorización?
Para mejorar la legibilidad, eliminar duplicación, reducir la complejidad y facilitar el mantenimiento.
Da 3 técnicas comunes de refactorización.
Extraer método, renombrar variable, mover función a otra clase.
¿La refactorización mejora el rendimiento del software?
No necesariamente
¿Cuál es la diferencia entre refactorizar y reescribir?
Refactorizar mantiene el mismo comportamiento funcional
¿Qué es un antipatrón?
Una solución común que parece buena al principio pero causa problemas a largo plazo.
Menciona un ejemplo de antipatrón y por qué es malo.
God Object: concentra demasiadas responsabilidades, lo que hace difícil su mantenimiento.
Spaghetti Code: el flujo del programa es enredado, lo que complica su comprensión y mantenimiento.
Lava Flow: hay código antiguo o sin uso que sigue en el sistema, lo que aumenta la complejidad y el riesgo de errores.
Hard Coding: escribir valores fijos en el código en lugar de parametrizarlos, lo que reduce la flexibilidad del sistema.
Copy-Paste Programming: duplicar código en lugar de reutilizarlo, lo que causa errores y dificulta cambios.
Boat Anchor: tener componentes o código inútil que no se elimina por si acaso, lo que añade peso innecesario al sistema.
¿Qué es el principio de responsabilidad única (SRP)?
Cada clase debe tener una sola razón para cambiar.
¿Qué técnica de refactorización consiste en dividir un método largo en métodos más pequeños y específicos?
Extraer método.
¿Qué tipo de errores busca evitar la refactorización?
Errores por código duplicado o difícil de mantener.
¿Cuál es una señal clara de que un código necesita refactorizarse?
Código duplicado o funciones muy largas.
¿Qué herramienta se usa comúnmente para detectar partes del código que pueden mejorarse?
Linter o herramientas de análisis estático.
¿Qué principio de diseño se busca respetar al refactorizar con SRP?
Cada clase o función debe tener una sola responsabilidad.
¿Cuál es el riesgo de realizar refactorización sin tener pruebas automatizadas?
Puedes introducir errores sin darte cuenta, ya que no tienes forma de validar que el comportamiento del sistema siga siendo el mismo.
¿Cómo se relaciona la refactorización con los principios SOLID?
La refactorización busca cumplir principios como SRP (una responsabilidad por clase) o OCP (abierto a extensión, cerrado a modificación) para mejorar el diseño.
¿Cuándo es mejor reescribir un módulo completo en lugar de refactorizarlo?
Cuando el código es tan complejo, acoplado o sin pruebas que resulta más costoso entenderlo y modificarlo que reescribirlo desde cero.
¿Qué significa el acrónimo SOLID en diseño orientado a objetos?
Cinco principios: SRP OCP LSP ISP y DIP para crear sistemas robustos mantenibles y extensibles
¿Qué busca mejorar el uso de los principios SOLID en el diseño del software?
La mantenibilidad extensibilidad reutilización y reducción del acoplamiento entre módulos
¿Qué principio de SOLID dice que una clase debe tener una sola razón para cambiar?
SRP - Principio de Responsabilidad Única
¿Qué principio de SOLID promueve que el código pueda extenderse sin modificar el existente?
OCP - Principio de Abierto Cerrado
¿Qué principio de SOLID dice que una clase derivada debe poder reemplazar a su clase base sin romper el sistema?
LSP - Principio de Sustitución de Liskov
¿Qué principio de SOLID sugiere que los clientes no deben depender de interfaces que no utilizan?
ISP - Principio de Segregación de Interfaces
¿Qué principio de SOLID propone que las clases deben depender de abstracciones no de clases concretas?
DIP - Principio de Inversión de Dependencias
¿Cómo ayuda SRP durante la refactorización?
Permite dividir clases grandes en varias clases más específicas y manejables