Clean Code en Python: legibilidad, diseño y deuda técnica controlada

Aprende principios de código limpio aplicados a Python: naming, funciones cohesionadas, separación de responsabilidades y refactor seguro.

Clean Code no trata de estética: trata de reducir coste de cambio y errores en mantenimiento.

En Python, legibilidad es una ventaja competitiva; código claro acelera revisión, onboarding y depuración.

Las malas prácticas más caras suelen ser: funciones gigantes, nombres ambiguos y mezcla de capas (dominio, I/O, infraestructura).

Refactorizar con criterio implica cambios pequeños, tests que cubran comportamiento y validación constante.

  • Si el nombre no explica intención, el lector tendrá que deducir lógica oculta.
  • Prefiere nombres orientados a dominio (`calcular_precio_final`) frente a abreviaturas opacas (`calc_pf`).
  • Un nombre debe explicar propósito, no implementación interna temporal.
  • El naming consistente reduce carga cognitiva y evita errores en colaboración.
  • Una función debería resolver un problema claro y acotado.

1) Naming expresivo y semántico

Si el nombre no explica intención, el lector tendrá que deducir lógica oculta.

Prefiere nombres orientados a dominio (`calcular_precio_final`) frente a abreviaturas opacas (`calc_pf`).

Un nombre debe explicar propósito, no implementación interna temporal.

El naming consistente reduce carga cognitiva y evita errores en colaboración.

2) Funciones pequeñas con responsabilidad única

Una función debería resolver un problema claro y acotado.

Cuando una función valida, transforma, persiste y además loggea, probablemente hace demasiado.

Divide por responsabilidades para facilitar tests unitarios y reutilización.

Funciones pequeñas mejoran trazabilidad de errores y reducen impacto de cambios.

3) Separación de capas y refactor seguro

Mantén dominio desacoplado de infraestructura para poder evolucionar sin fricción.

El código de negocio no debería depender directamente de detalles de transporte (CLI/HTTP) o persistencia.

Refactoriza en pasos pequeños: cambia estructura, ejecuta tests, confirma comportamiento, repite.

La deuda técnica baja cuando cada capa tiene límites claros y contratos explícitos.

  • Dominio separado de entrada/salida.
  • Dependencias explícitas en funciones/clases.
  • Refactors incrementales respaldados por tests.
  • Eliminar duplicación solo cuando hay patrón estable.
Python
23

Clean Code en Python: legibilidad, diseño y deuda técnica controlada

Aprende principios de código limpio aplicados a Python: naming, funciones cohesionadas, separación de responsabilidades y refactor seguro.

Código del tema: Automatizacion y codigo legible en Python

📘 Teoría

1) Naming expresivo y semántico

Si el nombre no explica intención, el lector tendrá que deducir lógica oculta.

1

Prefiere nombres orientados a dominio (`calcular_precio_final`) frente a abreviaturas opacas (`calc_pf`).

2

Un nombre debe explicar propósito, no implementación interna temporal.

3

El naming consistente reduce carga cognitiva y evita errores en colaboración.

Antes y después de naming
# Malo
def cp(x, d):
    return x - (x * d)

# Mejor
def calcular_precio_final(subtotal: float, descuento: float) -> float:
    return subtotal - (subtotal * descuento)

2) Funciones pequeñas con responsabilidad única

Una función debería resolver un problema claro y acotado.

Cuando una función valida, transforma, persiste y además loggea, probablemente hace demasiado.

Divide por responsabilidades para facilitar tests unitarios y reutilización.

Funciones pequeñas mejoran trazabilidad de errores y reducen impacto de cambios.

1

Extracción de función

Separar cálculo de presentación.

2

Composición limpia

Orquestación de funciones específicas.

3) Separación de capas y refactor seguro

Mantén dominio desacoplado de infraestructura para poder evolucionar sin fricción.

El código de negocio no debería depender directamente de detalles de transporte (CLI/HTTP) o persistencia.

Refactoriza en pasos pequeños: cambia estructura, ejecuta tests, confirma comportamiento, repite.

La deuda técnica baja cuando cada capa tiene límites claros y contratos explícitos.

  • Dominio separado de entrada/salida.
  • Dependencias explícitas en funciones/clases.
  • Refactors incrementales respaldados por tests.
  • Eliminar duplicación solo cuando hay patrón estable.
Capa de dominio independiente
def calcular_total(subtotal: float, impuestos: float, descuento: float) -> float:
    base = subtotal * (1 + impuestos)
    return round(base * (1 - descuento), 2)

🧪 Aprende probando

Ejemplo Ejemplo: refactor de cálculo de precio Separa cálculo en función dedicada para facilitar pruebas y reutilización.

🏁 Retos

Reto Reto: extrae lógica a función dedicada Convierte cálculo inline en función `aplicar_descuento`.

🧰 Recursos

Test

Comprueba tus conocimientos con un test sobre Python.

Test de Python

¿Qué es esto?

Soy Cristian Eslava y a veces hago webs para procrastinar yo y vosotros 😉.

Esta la hice en febrero de 2026 para facilitar el aprendizaje de mis alumnxs. Aprender desarrollo web practicando. La idea es que crezca semanalmente con nuevos temas, tests y retos.

Inspirado en MDN, en W3Schools, en Codepen, en el crack de Manz y en mil sitios de documentación sobre desarrollo web. Quería aportar además de bloques teóricos con ejemplos, la gamificación de los retos y el sistema de test que ya tenía en culTest .

Si te gustó, si no te gustó, si quieres saludarme, o invitarme a 🍻 no dudes en escribirme en cristianeslava@gmail.com .