Java 8 Optional. ¿De verdad hacía falta?
Java 8 Optional
¿De verdad hacía falta una API para tratar nulos?
Me surgen las siguientes dudas.- ¿Desde cuando tratar con valores nulos dentro de un programa se convirtió en un problema?
- ¿Es el temido NullPointerException realmente un problema del lenguage o del programa?
- ¿Esta el Optional realmente simplificando la lógica del programa?
- ¿Esta el Optional realmente ayudando a diseñar un programa más robusto?
- ¿Esta el Optional realmente resolviendo el problema original?
Hasta donde yo he podido llegar, no veo ninguna aportación ni a la programación ni al lenguaje el uso del Optional de Java 8. De hecho, lo que si he podido llegar a ver ha sido justamente lo contrario. Donde antes veía simples if ahora veo sobre-ingeniería, e incluyo utilización de APIs adicionales para tratar con los tales Optional. Después de ver esto, esto es tal y como yo lo veo:
- La programación es un arte y por lo tanto el tratamiento de nulos también lo es.
- El Optional es sencillamente más verbose que escribir directamente una sentencia if
- Decorar o enmascarar un nulo no simplifica la lógica del programa
- La robusteza de un programa no se gana añadiendo más capas
- En Java ya existen mecanismos como el try-catch para tratar errores inesperados
- El uso de lambdas no ahorra código y no justifica la utilización de tal API
Para terminar, creo que no habrá ningún framework que vaya a solucionar lo que para mi son errores de programación, ni hacer un programa más robusto por arte de magia; con Optional o sin Optional, seguirán habiendo NullPointerException con total seguridad; de hecho la susodicha API los lanza. Sin embargo, si google y Java han diseñado tales APIs para tratar nulos, la pregunta que realmente que me queda es:
- ¿Qué me estoy perdiendo y donde están los ejemplos reales que justifiquen el diseño y la utilización de semejante API?
Great Post,Very well written post
ReplyDeleteData Science Course