Permítanme ofrecerles una perspectiva sobre por qué agregamos esta característica al lenguaje, cuando claramente no lo necesitábamos estrictamente (todas las referencias de métodos se pueden expresar como lambdas).
Tenga en cuenta que no hay una respuesta correcta . Cualquiera que diga "use siempre una referencia de método en lugar de una lambda" o "siempre use una lambda en lugar de una referencia de método" debe ser ignorado.
Esta pregunta es muy similar en espíritu a "¿cuándo debo usar una clase con nombre frente a una clase anónima"? Y la respuesta es la misma: cuando lo encuentre más legible . Ciertamente, hay casos que son definitivamente uno o definitivamente el otro, pero hay una gran cantidad de grises en el medio, y se debe usar el juicio.
La teoría detrás de las referencias de métodos es simple: los nombres importan . Si un método tiene un nombre, entonces referirse a él por su nombre, en lugar de por una bolsa imperativa de código que en última instancia simplemente se da la vuelta y lo invoca, es a menudo (¡pero no siempre!) Más claro y legible.
Los argumentos sobre el desempeño o sobre contar personajes son en su mayoría pistas falsas, y debes ignorarlas. El objetivo es escribir un código que sea claro como el cristal de lo que hace. Muy a menudo (¡pero no siempre!) Las referencias de método ganan en esta métrica, por lo que las incluimos como una opción, para ser utilizadas en esos casos.
Una consideración clave sobre si las referencias de método aclaran u ofuscan la intención es si es obvio por el contexto cuál es la forma de la función que se representa. En algunos casos (p. Ej. map(Person::getLastName)
, Está bastante claro por el contexto que se requiere una función que mapee una cosa a otra, y en casos como este, las referencias de método brillan. En otros, el uso de una referencia de método requiere que el lector se pregunte de qué tipo de la función se está describiendo; esta es una señal de advertencia de que una lambda podría ser más legible, incluso si es más larga.
Finalmente, lo que hemos descubierto es que la mayoría de las personas al principio se alejan de las referencias de métodos porque se sienten aún más nuevas y extrañas que las lambdas, por lo que inicialmente las encuentran "menos legibles", pero con el tiempo, cuando se acostumbran a la sintaxis, generalmente cambian su comportamiento y gravitan hacia referencias de métodos cuando pueden. Por lo tanto, tenga en cuenta que su propia reacción inicial subjetiva "menos legible" casi con seguridad implica algún aspecto de sesgo de familiaridad, y debe darse la oportunidad de sentirse cómodo con ambos antes de emitir una opinión estilística.