Los sistemas de tipos existen para capturar errores antes de que se conviertan en fallos en tiempo de ejecución. El error del método .get() de entidades fue un caso donde el sistema de tipos hacía su trabajo perfectamente -- y esa perfección revelaba un defecto de diseño en el manejador de acciones.
El botón de eliminar de la aplicación de tareas dejó de funcionar, produciendo un error de compilación: Type mismatch: expected Todo, found Todo?. La función removeTodo esperaba un Todo garantizado, pero Todo.find(123) devolvía Todo? -- un opcional que podría ser None.
La solución seguía el patrón universal de ORM: .find() devuelve un opcional (seguro), .get() devuelve un valor garantizado (asertivo, lanza error si no existe). Se añadió .get() con cambios en el verificador de tipos, bytecode, VM y manejador de acciones.
El principio de diseño: haz el caso común seguro y haz la aserción explícita. .find() es seguro: devuelve un opcional. .get() es asertivo: garantiza un valor, lanzando error si la garantía no se puede cumplir.
Esta es la Parte 166 de la serie "Cómo construimos FLIN", que documenta cómo un CEO en Abidjan y un CTO de IA diseñaron y construyeron un lenguaje de programación desde cero.
Navegación de la serie: - [165] El error del alternador de tema - [166] El error del método .get() de entidades (estás aquí) - [167] Errores de ordenamiento de entidades y formato de tiempo