Siempre prefiere static factory methods al uso de constructores.
Hay dos circunstancias distintas donde debemos seguir esta máxima: cuando creamos una clase y definimos cómo se van a crear sus instancias, y cuando creamos instancias de otras clases que no hemos definido nosotros.
Creo que la mayor parte del tiempo tenemos esto presente cuando estamos definiendo nuestra clase. Y no tanto cuando creamos objetos de otras. En especial si esa clase tiene constructores públicos.
Destruir la instalación de Windows de nuestro equipo es sorprendentemente fácil mientras intentamos eliminar Windows de un disco viejo.
Cuando compramos un disco más grande para nuestra PC de escritorio o reemplazamos el de nuestra notebook muchas veces nos quedamos con el anterior para guardar datos. En esta circunstancia es altamente probable que en lugar de formatear ese disco decidamos eliminar los archivos que no nos interesan manualmente. Y así ahorrarnos el trabajo de mover los datos temporalmente a otro lado mientras formateamos.
Claro que hay muchas cosas para hacer cuando hablamos de escribir código más legible en Java. Lo que vamos a ver a continuación es cómo utilizar la biblioteca Lombok para escribir menos código. Y como resultado tener un código fuente más legible.
Lombok Es una biblioteca extensa y no vamos a cubrir todas sus características en este artículo. Vamos a hacer un recorrido en el que, yo creo, es el orden de utilidad.
El soporte de expresiones Lambda apareció en Java 1.8 en Marzo de 2014. Sin embargo aún hoy muchos desarrolladores no las utilizan o sólo lo hacen como clientes de código que las acepta. Pero no escriben código que las reciba.
Una expresión lambda (lambda expression) es una función anónima. Es decir que es un bloque de código que puede recibir parámetros y devolver un valor. Pero no tiene nombre, por lo que no puede declararse y luego llamarse desde alguna parte del código.
Mientras escribía el artículo sobre FunnyStrings necesité usar la función de valor absoluto de Go y me crucé nuevamente con el viejo y conocido problema de redondeo de la aritmética de punto flotante en computadoras.
Para resolver el problema mencionado necesitaba comparar los valores absolutos de diferencias entre caracteres. Para esto usé la función math.Abs() de la biblioteca estándar. Y sólo hay una versión que recibe float64 como tipo de entrada.