Tu primer encargo en el equipo
Empiezas en una tienda online de aceite de Jaén. El primer día, tu jefa te escribe: "Queremos el envío gratis desde 40 euros, no desde 50. ¿Lo cambias tú?"
El proyecto tiene 300 archivos. Ninguno lo escribiste tú. No hace falta leerlos todos. Hace falta saber dónde mirar.
Al final de esta lección
Nota
Puedo encontrar dónde vive una función en un código que no he escrito yo.
Palabras clave
| Palabra | Qué significa | Ejemplo |
|---|---|---|
| Repositorio | la carpeta con todo el código de un proyecto | |
| Función | un bloque de código con nombre que hace una tarea | shipping_cost |
| Llamada | la línea que pone una función en marcha | shipping_cost(4300) |
| Punto de entrada | el lugar donde empieza a ejecutarse el programa | |
| grep | una orden que busca un texto dentro de archivos | grep -rn "envio" . |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Las carpetas son el mapa
Antes de abrir ningún archivo, mira cómo están organizadas las carpetas. Casi siempre se agrupan por tema: pedidos, pagos, envíos, usuarios.
Busca también un archivo README. Suele explicar qué hace el proyecto y cómo se arranca.
Tu encargo habla de envíos. Así que empiezas por la carpeta que se llama así.
Ejemplo: el repositorio de la tienda
| Carpeta | Qué hay dentro | ¿Mirar para el encargo? |
|---|---|---|
| pedidos/ | el carrito, el total y la compra | Sí, llama a los envíos |
| envios/ | lo que cuesta mandar un paquete | Sí, primero aquí |
| pagos/ | tarjeta y Bizum | No |
| usuarios/ | altas, contraseñas y direcciones | No |
| README.md | cómo arrancar el proyecto | Sí, cinco minutos |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Busca la palabra en todo el proyecto
Las carpetas te acercan. La búsqueda te lleva a la línea exacta.
La orden grep -rn "texto" carpeta mira dentro de todos los archivos. La r entra en las subcarpetas. La n muestra el número de línea.
Cada resultado dice el archivo, la línea y lo que pone. Ejecuta el bloque siguiente y lee los dos resultados.
Prueba: busca una función
# Creamos una copia pequeña del proyecto de la tienda.
mkdir -p tienda/pedidos tienda/envios
printf 'def checkout(cart):\n return order_total(cart)\n' > tienda/pedidos/checkout.py
printf 'def order_total(cart):\n return sum(cart) + shipping_cost(sum(cart))\n' > tienda/pedidos/total.py
printf 'FREE_FROM = 5000\ndef shipping_cost(total):\n return 0 if total >= FREE_FROM else 495\n' > tienda/envios/coste.py
# Buscamos la palabra en todos los archivos, con el número de línea.
grep -rn "shipping_cost" tienda
Un error frecuente
Advertencia
Mucha gente cree que debe leer todo el código antes de tocar nada. En un proyecto real eso lleva semanas. Busca la palabra del encargo y lee solo lo que está cerca. Lo demás lo aprendes poco a poco, cuando lo necesites.
Sigue la llamada desde el principio
Ya sabes dónde está shipping_cost. Ahora falta saber quién la usa.
Empieza en el punto de entrada: aquí es checkout, lo que pasa al pulsar Comprar. Lee esa función hasta encontrar una llamada. Salta a la función llamada y repite.
Así ves el camino entero: checkout llama a order_total, y order_total llama a shipping_cost.
Practica: cambia el envío gratis
# Archivo envios/coste.py
FREE_FROM = 5000 # céntimos: 50 euros
def shipping_cost(total):
if total >= FREE_FROM:
return 0
return 495
# Archivo pedidos/total.py
def order_total(cart):
goods = sum(cart)
return goods + shipping_cost(goods)
# Archivo pedidos/checkout.py: aquí empieza todo
def checkout(cart):
total = order_total(cart)
print("Total a pagar:", total, "céntimos")
checkout([1800, 2500]) # 43 euros de aceite y miel
# Tu jefa quiere el envío gratis desde 40 euros.
# Cambia una sola línea y pulsa Ejecutar otra vez.