Sobes.tech
Middle

¿Qué criterios de evaluación del código en estilo procedural se pueden considerar buenos y cuáles malos?

sobes.tech AI

Respuesta de la IA

Criterios buenos:

  • Legibilidad: Qué tan fácil es entender qué hace el código leyendo de arriba hacia abajo.
  • Claridad de variables y funciones: Uso de nombres descriptivos que reflejen su propósito y lógica.
  • Descomposición: Dividir tareas complejas en funciones más pequeñas y manejables. Cada función debe realizar una tarea específica.
  • Ausencia de variables globales: Minimizar el uso de variables globales para reducir dependencias y efectos secundarios.
  • Manejo de errores: Manejo explícito de errores y excepciones posibles.
  • Comentarios: Presentes donde el código no es obvio o para explicar la lógica.
  • Consistencia en el estilo: Estilo uniforme de formato y nomenclatura en todo el proyecto.
  • Minimización de duplicación de código: Evitar repetir bloques de código iguales.
# Buen ejemplo de descomposición y nombres claros
def calculate_average(numbers):
    """Calcula el promedio de una lista de números."""
    if not numbers:
        return 0
    total = sum(numbers)
    return total / len(numbers)

def process_data(data):
    # Suponemos que 'data' es una lista de listas de números
    averages = []
    for row in data:
        avg = calculate_average(row)
        averages.append(avg)
    return averages

Criterios malos:

  • Falta de claridad: El código es difícil de entender debido a lógica confusa, nombres poco descriptivos o falta de estructura.
  • "Código espagueti": Muchas transiciones y dependencias que hacen difícil seguir la secuencia de ejecución.
  • Código "lazo": Funciones largas y monolíticas que realizan muchas tareas no relacionadas.
  • Uso de "números mágicos": Constantes numéricas sin explicación en el código.
  • Falta de manejo de errores: El programa "se cae" ante situaciones imprevistas.
  • Duplicación de código: Bloques iguales o muy similares repetidos en diferentes lugares.
  • Estilo inconsistente: Diferentes formatos y nombres que dificultan la lectura.
# Ejemplo pobre de "lazo" y números mágicos
def process(d):
    t = 0
    for r in d:
        s = 0
        c = 0
        for n in r:
            s += n
            c += 1
        if c > 0:
            t += s / c
    return t / len(d) if len(d) > 0 else 0

Comparación:

Buenos criterios Criterios malos
Legibilidad Falta de claridad ("espagueti", "lazo")
Variables y funciones comprensibles Nombres ilegibles
Descomposición Funciones monolíticas
Ausencia de variables globales Uso excesivo de variables globales
Manejo explícito de errores Falta de manejo de errores
Comentarios donde son necesarios Ausencia de comentarios
Estilo consistente Estilo inconsistente
Minimización de duplicación de código Duplicación de código