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?

Comments

Popular posts from this blog

How to build a replicated ehcache through firewall and not to die trying

Android 3D Model Viewer Open Source

Java 9 Process API