Lección 40 de 45 · Calidad y depuración

PEP 8 y formato

El buen estilo reduce la cantidad de cosas que otra persona —o tú dentro de un mes— necesita descifrar para entender el programa.

PEP 8Legibilidad sin cambiar conductaFormato
Índice · Lección 40/45
PEP 8 no es una lista para memorizar antes de programar

Primero necesitas código correcto y comprensible. Después aplicas convenciones para que su forma sea predecible: nombres familiares, espacios consistentes y bloques fáciles de escanear.

La prioridad de esta lección será: intención clara → estructura simple → formato consistente.

Evidencia de aprendizaje

Mejorar nombres y estructura sin cambiar el comportamiento observable del programa.

Un nombre útil elimina comentarios que solo traducen abreviaturas

La intención se entiende sin preguntar qué significa cada variable
precio_unitario = 12
cantidad = 3
precio_total = precio_unitario * cantidad
print(precio_total)

precio_total comunica mejor que pt o x qué representa el valor. Para variables y funciones, Python suele usar snake_case; para clases, PascalCase.

Los nombres no necesitan ser frases completas. Necesitan ser suficientemente precisos para su contexto.

Una función corta debería contar una sola historia

Separar una decisión con nombre puede hacer el flujo más evidente
def tiene_envio_gratis(total):
    return total >= 50

pedido_total = 72
if tiene_envio_gratis(pedido_total):
    print("Envío gratis")

La función no es mejor por ser corta; es mejor porque su nombre expresa una regla concreta. Si una función obliga a recordar muchas tareas distintas a la vez, dividir responsabilidades suele mejorar la lectura.

El formateador corrige forma; el linter señala patrones; ninguno diseña por ti

Herramientas como un formateador pueden decidir espacios y saltos de línea de manera automática. Un linter puede avisar sobre convenciones o posibles problemas. Eso libera atención para decisiones más importantes.

Pasar un formateador no convierte automáticamente un nombre confuso en uno claro ni una función enorme en un buen diseño. La herramienta ordena la superficie; tú sigues decidiendo la intención.

Los comentarios aportan contexto cuando explican el porqué

Un comentario útil conserva una decisión que el código no revela
importe = 125.678
# El proveedor exige redondear antes de aplicar la comisión.
base = round(importe, 2)
comision = base * 0.03

Un comentario como # multiplica por 0.03 repetiría el código. En cambio, explicar una restricción externa ayuda a entender por qué esa línea existe.

Haz el código más claro sin cambiar lo que hace

Más esfuerzo al leer
def f(a, b):
    x = a + b
    return x
La intención se ve
def sumar_precios(precio_a, precio_b):
    total = precio_a + precio_b
    return total

La segunda versión no “hace más”. Reduce la cantidad de contexto que debes mantener en la cabeza.

Renombra la variable local x a total sin alterar el resultado de la función.

Salida esperada
15
estilo.py
La salida aparecerá aquí.

Necesito una pista
  • Cambia el nombre en la asignación y en el return.
  • No necesitas inspeccionar internamente la función: basta comprobar que el comportamiento sigue siendo 15.
Ver una solución razonada
def sumar_precios(precio_a, precio_b):
    total = precio_a + precio_b
    return total

print(sumar_precios(10, 5))

Recupera lo anterior · minuto 8

Sin mirar apuntes

Una función falla solo para el valor límite y además cuesta entenderla por nombres como x y y. ¿Qué orden de trabajo reduce riesgo?

Comprobar

Primero escribe una prueba que reproduzca el límite, después depura con una hipótesis y cambio mínimo, y solo con el comportamiento protegido mejora nombres/formato sin alterar el resultado.

La meta de estilo es reducir fricción, no alcanzar perfección estética

  • Elige nombres que expliquen el papel del dato o de la acción.
  • Mantén cada bloque enfocado para que pueda leerse sin sostener demasiadas decisiones en la cabeza.
  • Automatiza el formato repetitivo y reserva tu atención para el diseño.
Puedes pasar al siguiente tema cuando...

puedes mejorar la legibilidad de un fragmento sin cambiar su comportamiento y explicar qué mejora concreta obtiene el lector.