Por qué es importante en proyectos reales ⏱️
Mantenibilidad es la velocidad de los cambios sin caídas ni nervios. Cuanto más fácil sea leer y probar el código, más rápidos serán los lanzamientos y menos errores habrá. Estos 5 errores son los más comunes, así que empecemos por ellos.
❌ Números y cadenas mágicos
Los «3», «0,15» y «S» no son obvios y hacen que uno se pregunte qué significan.
# antes
if user_status == 3:
discount = 0.15
# se convirtió en
VIP_USER = 3
LOYALTY_DISCOUNT = 0.15
if user_status == VIP_USER:
discount = LOYALTY_DISCOUNT💡 Utiliza constantes, enumeraciones (Enum) y configuraciones: el significado se vuelve claro.
❌ Funciones de kilometraje
La función de 150 líneas lo hace todo a la vez: analiza la entrada, la valida, escribe en la base de datos y dibuja un informe.
# dividir en pasos
def parse_request(req): ...
def validate(data): ...
def save(data, db): ...
def build_report(data): ...
def handle(req):
data = parse_request(req)
validate(data)
save(data, db="main")
return build_report(data)Las funciones pequeñas son más fáciles de probar, reutilizar y leer.
❌ Duplicación de código
El copiar y pegar conduce a una discrepancia lógica: en un lugar se corrige, en otro se olvida.
# fue (dos bloques de cálculo de impuestos similares)
def calc_tax_order(total): return total * 0.07
def calc_tax_invoice(total): return total * 0.07
# se convirtió en
def calc_tax(amount, rate=0.07):
return amount * rate🔁 Mueva lo repetitivo a una función, clase o módulo; en las plantillas, use macros/partials.
❌ Nombres malos
Los nombres f, x, processData sin contexto son un quebradero de cabeza.
# antes
def f(x): return x*7/100
# se convirtió en
def calculate_tax(price: float, tax_rate: float = 0.07) -> float:
return price * tax_ratePongamos nombres por área temática: qué es exactamente lo que piensa/hace la entidad.
❌ No hay comentarios ni documentación
El código explica el «cómo», pero a menudo se necesita una respuesta al «por qué». Las decisiones y suposiciones complejas sin comentarios son una trampa.
def allocate_slots(users):
"""
Distributes slots to users.
The algorithm is greedy: first VIP, then PRO, then FREE.
This is critical for SLA partners.
"""
...📚 Mantén los archivos README, docstrings y comentarios breves en lugares no triviales.

📊 Resumen: errores y cómo solucionarlos
Error | ¿Por qué es peligrosa? | Corrección |
|---|---|---|
Números/líneas mágicas | Pérdida de significado, riesgo de correcciones incorrectas | Constantes, enumeraciones, configuraciones |
Funciones largas | Se prueban mal, son difíciles de leer | Descomposición en pasos cortos |
Duplicación | Discrepancia lógica, errores en los cambios | Extracción a funciones/módulos |
Nombres malos | Disminución de la velocidad de lectura/incorporación | Nombres de lógica de dominio |
No hay documentación | Incumplimiento de los plazos, dependencia de los «portadores de conocimientos» | Docstrings, README, comentarios breves |
Minilista de verificación antes de las relaciones públicas ✅
¿Hay «magia» en los números/filas sin sentido?
¿Las funciones son más cortas, de unas 30-40 líneas, y hacen una sola cosa?
¿Se ha eliminado el copiar y pegar? Lo repetitivo se pone en el módulo general.
¿Los nombres se leen sobre la marcha? (métodos, variables, archivos)
¿Hay docstrings/README para la entrada de un principiante?
¿Las pruebas cubren la lógica clave?
Dónde entrenar con buenas prácticas 💡
En Codice hacemos que el aprendizaje de la programación sea emocionante y comprensible: tenemos cursos interesantes con tareas que ayudan a mejorar las habilidades paso a paso.
Y también tenemos un canal de telegram, donde discutimos ideas geniales, compartimos experiencias y analizamos juntos las tareas: aprender no solo es útil, sino también divertido.
¿Cuál de los cinco errores es más común en tus proyectos?
