DEV Community

Java Efetivo (livro)
Java Efetivo (livro)

Posted on

Item 43: Dê preferência às referências para métodos em vez dos lambdas

Vantagens das Referências para Métodos

  • Concisão: Referências para métodos são mais concisas que lambdas.
    Exemplo: Incrementar valor em um Map usando merge:

  • Lambda: (count, incr) -> count + incr
    Referência para método: Integer::sum

Redução de Boilerplate
Remoção de Parâmetros Inúteis: Parâmetros como count e incr são eliminados.
Exemplo:

map.merge(key, 1, Integer::sum);

Enter fullscreen mode Exit fullscreen mode

Uso Eficiente de Referências para Métodos

  • Documentação Útil em Lambdas: Em alguns casos, nomes de parâmetros em lambdas podem fornecer documentação útil.
  • Conversão de Lambdas para Métodos: Se um lambda for muito complexo, extrair o código para um método separado e usar a referência para esse método.

IDEs e Referências para Métodos

  • Sugestões de IDE: IDEs frequentemente sugerem substituição de lambdas por referências para métodos.
  • Aceitação das Sugestões: Geralmente, aceite as sugestões, mas avalie caso a caso.

Exceções e Considerações

  • Lambdas mais Concisos: Às vezes, lambdas são mais concisos que referências para métodos.
  • Exemplo com Classe:
  • Referência para método: GoshThisClassNameIsHumongous::action
  • Lambda: () -> action()
  • Função Identidade: Function.identity() vs. x -> x

Tipos de Referências para Métodos

  • Estática: Integer::parseInt (lambda: str -> Integer.parseInt(str))
  • Limitada: Instant.now()::isAfter (lambda: t -> Instant.now().isAfter(t))
  • Ilimitada: String::toLowerCase (lambda: str -> str.toLowerCase())
  • Construtor de Classe: TreeMap::new (lambda: () -> new TreeMap)
  • Construtor de Array: int[]::new (lambda: len -> new int[len])

Conclusão
Preferência pelas Referências para Métodos: Use referências para métodos quando forem mais curtas e claras que lambdas.
Uso de Lambdas: Prefira lambdas se eles forem mais concisos ou se fornecerem melhor documentação.

Image description

Postmark Image

Speedy emails, satisfied customers

Are delayed transactional emails costing you user satisfaction? Postmark delivers your emails almost instantly, keeping your customers happy and connected.

Sign up

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay