TEC · Técnica Herramientas

47.Estilo y buenas prácticas

Hábitos que hacen que el código sea fácil de leer, de probar, de corregir y de compartir: nombres claros, funciones pequeñas, estilo consistente, comentarios útiles y no repetir código.

¿Qué es?

Las buenas prácticas son hábitos que hacen que tu código, además de funcionar, sea fácil de leer, de corregir y de mejorar, por otras personas y por ti mismo dentro de seis meses.

El código se escribe una vez pero se lee muchas veces. Es como la letra en un cuaderno: si solo tú la entiendes hoy, mañana ni tú.

Las más importantes

Práctica En pocas palabras
Nombres claros promedio_grupo, no pg ni x2
Estilo consistente Seguir PEP 8 en Python
Funciones pequeñas Cada función hace una cosa
No repetir (DRY) Si copias y pegas código, conviértelo en función
Sin números mágicos CALIFICACION_MINIMA = 6, no un 6 suelto
Comentar el porqué El código dice qué hace; el comentario, por qué
Validar entradas No confiar en lo que escribe el usuario
Probar y versionar Pruebas automáticas y Git

Sintaxis (pseudocódigo / Python)

PSeInt: las mismas reglas aplican

Algoritmo CalcularPromedio
	Definir suma, calificacion, promedio Como Real
	Definir i, totalMaterias Como Entero
	totalMaterias <- 3
	suma <- 0
	Para i <- 1 Hasta totalMaterias Hacer
		Escribir "Calificación ", i, ":"
		Leer calificacion
		suma <- suma + calificacion
	FinPara
	promedio <- suma / totalMaterias
	Escribir "Promedio: ", promedio
FinAlgoritmo

Nombres con significado, indentación y una constante (totalMaterias) en lugar de repetir el 3.

Python: antes y después

# ✗ Difícil de leer (aunque funciona)
def f(l):
    s=0
    for x in l:
        if x>=6:s+=1
    return s/len(l)*100
print(f([8,5,9,6,4]))
CALIFICACION_MINIMA = 6

def porcentaje_aprobados(calificaciones):
    """Devuelve el porcentaje de calificaciones aprobatorias (0 a 100)."""
    if not calificaciones:
        return 0
    aprobados = sum(1 for c in calificaciones if c >= CALIFICACION_MINIMA)
    return aprobados / len(calificaciones) * 100

print(porcentaje_aprobados([8, 5, 9, 6, 4]))

Salida de las dos versiones: 60.0

La segunda tiene nombres claros, una constante, un docstring (la cadena que explica la función), espacios según PEP 8 y no falla con una lista vacía.

Ejemplo guiado

Problema: mejorar este programa que repite código y mezcla cálculo con impresión.

# ✗ Código repetido
a = [9, 7, 8]
print("Ana:", round(sum(a) / len(a), 2))
b = [6, 5, 7]
print("Luis:", round(sum(b) / len(b), 2))
c = [10, 9, 10]
print("Sofía:", round(sum(c) / len(c), 2))

1. Extraer la parte repetida en una función (DRY):

2. Separar el cálculo de la impresión (la función devuelve, no imprime; así se puede probar).

3. Guardar los datos en una estructura en lugar de variables sueltas.

def promedio(calificaciones):
    """Promedio redondeado a 2 decimales; 0 si la lista está vacía."""
    if not calificaciones:
        return 0
    return round(sum(calificaciones) / len(calificaciones), 2)

grupo = {
    "Ana": [9, 7, 8],
    "Luis": [6, 5, 7],
    "Sofía": [10, 9, 10],
}

for alumno, calificaciones in grupo.items():
    print(f"{alumno}: {promedio(calificaciones)}")

assert promedio([10, 8]) == 9
assert promedio([]) == 0

Salida esperada:

Ana: 8.0
Luis: 6.0
Sofía: 9.67

Agregar un alumno ahora es una línea en el diccionario, y la función tiene pruebas.

Lista de revisión antes de entregar

  1. ¿Los nombres explican qué guardan o qué hacen?
  2. ¿Hay código repetido que pueda ser una función?
  3. ¿Cada función hace una sola cosa?
  4. ¿Probé con casos normales, límite y vacíos?
  5. ¿Quité los print de depuración?
  6. ¿El código sigue PEP 8 (formateador)?
  7. ¿Hice commit con un mensaje claro?

Errores comunes

Buenas prácticas

  • Escribe para quien lo va a leer, no para la computadora.
  • Usa un formateador y un linter (Black, Ruff) para no discutir de estilo.
  • Pide revisión de código a un compañero y revisa el de otros: se aprende mucho.
  • Mantén las cosas simples: la solución más sencilla que funciona suele ser la mejor.
  • Deja el código mejor de lo que lo encontraste: si arreglas algo, aprovecha para aclarar un nombre.
  • Con esta ficha termina la tabla de Programación: repasa las fichas con la lista de revisión de la pestaña 3.

Material descargable

Aún no hay material descargable para este tema. Pronto habrá cuadernillos, manuales o laboratorios.

Referencias

Antes conviene ver…

© solutions_ · Fundamentos de programación · 47 Estilo y buenas prácticas