🥸U P I D

Untestability 🧪

  • Descripción: Código difícil de testear, usualmente debido a alto acoplamiento.

  • Solución: Usar inyección de dependencias para facilitar los tests.

  • Ejemplo:

// Difícil de probar debido al alto acoplamiento
public class ProcesadorDePagos
{
    private RegistroDePagos registro = new RegistroDePagos();
    
    public void ProcesarPago(Pago pago)
    {
        registro.Registrar(pago);
        // Más lógica aquí...
    }
}

Premature Optimization🏎️

  • Descripción: Optimizar el código antes de que sea necesario, lo que puede llevar a complejidad innecesaria.

  • Solución: Enfocarse en claridad y mantenibilidad primero. Optimizar cuando se requiera basado en pruebas de rendimiento.

  • Ejemplo:

  • // Ejemplo de optimización prematura
    public int CalcularSumaOptimizada(int[] numeros)
    {
        // Implementación compleja anticipando problemas de rendimiento
        return numeros.Sum();
    }

Indiscreptive Naming 🏷️

  • Descripción: Usar nombres que no explican claramente el propósito de la variable, clase o función.

  • Solución: Elegir nombres significativos que describan su uso o propósito.

  • Ejemplo:

// Ejemplo de nombres poco descriptivos
public void Procesar(int d) { /*...*/ } // ¿Qué significa "d"?

Duplication 📋

  • Descripción: Tener bloques de código idénticos o muy similares en diferentes partes del proyecto.

  • Solución: Aplicar el principio DRY (Don't Repeat Yourself) para unificar el código duplicado.

  • Ejemplo:

// Duplicidad de código
public void EnviarCorreoCliente(string destinatario, string mensaje) { /*...*/ }
public void EnviarCorreoAdministrador(string destinatario, string mensaje) { /*...*/ }

Última actualización