Un nombre no define todo
Una función llamada promedio todavía deja decisiones abiertas. ¿Recibe una lista de números? ¿Admite una lista vacía? ¿Ignora datos inválidos o los rechaza? ¿Devuelve un número o un texto con unidades? Escribir esas decisiones forma un contrato que permite usarla y probarla.
No necesitas un documento extenso: tres líneas sobre entradas, salida y casos especiales pueden evitar que dos partes del programa esperen comportamientos diferentes.
Separar validez y conveniencia
Para una función que lee puntos enteros entre 0 y 100, "75" tiene formato y rango válidos. "150" tiene formato convertible, pero está fuera del rango. "setenta" no tiene el formato admitido. Cada rechazo debe responder a una regla declarada.
No conviertas automáticamente cualquier entrada inesperada en cero: ese cero podría confundirse con una calificación real. Rechazar con una explicación o devolver un resultado explícito de ausencia son decisiones posibles, pero deben ser consistentes.
La salida también merece precisión
Una búsqueda puede devolver el primer índice, todos los índices o un booleano. Elegir uno cambia cómo la utilizará otro código. Si devuelve un índice o None, el cero debe conservarse como posición válida; comprobar solo if resultado no distingue correctamente el primer elemento.
Piensa además si la función cambia sus argumentos. Ordenar una lista en el lugar afecta a quien conserve una referencia a ella. Si prometes conservarla, usa una estrategia que produzca otra lista y compruébalo.
Convertir el contrato en pruebas
Escribe primero una entrada habitual, una de frontera y una inválida. Para puntos, 60 es habitual, 0 y 100 son extremos válidos, y 101 están justo fuera. Así las pruebas se relacionan con decisiones del contrato.
Para una media, añade un solo elemento y signos opuestos. Estos casos pueden revelar un divisor fijo o una suma incorrecta que una lista grande no hace fácil de localizar.
Una plantilla para tu siguiente función
- Recibe: tipo, significado y límites de cada argumento.
- Devuelve: tipo y significado del resultado.
- Si no puede resolver: error o señal que entrega.
- Efectos: qué datos modifica, si modifica alguno.
- Ejemplos: entrada y salida esperada calculada aparte.
Con esa ficha puedes pedir ayuda sobre una función sin depender de que otra persona adivine qué querías conseguir.
¿Necesitas ayuda con este tema?
Trabájalo paso a paso con un profesor de EATRYL. Consulta disponibilidad y costo para reforzar Antes del código: define entradas, salida y errores.
Consultar una clase sobre este tema