JavaRush /Blogue Java /Random-PT /Pausa para café #73. Como melhorar seu código Java com St...

Pausa para café #73. Como melhorar seu código Java com Streams. Cinco melhores plug-ins IntelliJ IDEA para desenvolvedores Java

Publicado no grupo Random-PT

Como melhorar seu código Java com Streams

Fonte: Dev.toPausa para café #73.  Melhore seu código Java com Streams.  Cinco melhores plug-ins IntelliJ IDEA para desenvolvedores Java - 1

O que são fluxos?

Os fluxos apareceram pela primeira vez no Java 8. De acordo com a documentação da Oracle, eles são classes para suportar operações de estilo funcional em fluxos de elementos, como transformações de redução de mapa em coleções. Em termos simples, um fluxo consiste em uma fonte de dados, seguida por zero ou mais operações intermediárias e, em seguida, uma operação terminal.

O que é uma fonte de dados?

  • Coleções, listas, conjuntos, ints, longs, doubles, arrays, linhas de arquivo.

O que são operações intermediárias?

  • Filtrar, mapear, classificar, etc.
  • Essas operações retornam um Stream para que possam ser encadeadas a outras operações.

O que são operações de terminal?

  • ForEach, coletar, reduzir, encontrar primeiro, etc.
  • Eles retornam um resultado inválido ou sem fluxo.
  • Se uma thread não tiver uma operação de terminal, os intermediários não serão chamados.

Vamos converter uma função do estilo imperativo para declarativo usando Streams

Função imperativa (sem fluxos):

private int getResult_imperative(List<String> strings) {
    int result = 0;
    for (String string : strings){
        if(isDigit(string.charAt(0))) continue;
        if (string.contains("_")) continue;
        result += string.length();
    }
    return result;
}
Aqui notamos que precisamos fazer algumas coisas manualmente:
  • Declare uma variável de resultado para acompanhar o resultado.
  • Faça um loop pelas cordas.
  • Escreva duas instruções if (que podem ser muito mais complexas que este caso).
  • Adicione o comprimento de cada um ao resultado.

Vamos verificar o estilo declarativo (Streams):

private int getResult_Declarative(List<String> strings){
    return strings.
            stream().
            filter(s -> !isDigit(s.charAt(0))).
            filter(s -> !s.contains("_")).
            mapToInt(String::length).
            sum();
}
Então qual é a diferença?
  • Obtemos um objeto Stream chamando a função stream() .
  • (Operação intermediária) usamos a função de filtro duas vezes - cada vez especificamos uma condição que deve ser atendida apenas pelos elementos para os quais queremos passar na próxima fase.
  • (Operação intermediária) mapeamos cada objeto String para um int chamando o método length (usando o estilo de referência do método).
  • (Operação de terminal) soma todos os valores int anteriores .

Observações

A segunda abordagem não parecia mais simples? Indicamos o que queríamos, não como queríamos fazer . Este é o espírito da programação declarativa e o objetivo da API Stream em aplicativos Java modernos.

Cinco melhores plug-ins IntelliJ IDEA para desenvolvedores Java

Fonte: GitHubPausa para café #73.  Melhore seu código Java com Streams.  Cinco melhores plug-ins IntelliJ IDEA para desenvolvedores Java - 2 Plugins podem ser muito úteis em muitas situações ao trabalhar regularmente com código. Eles são capazes de estender a funcionalidade principal, fornecer várias integrações e oferecer suporte à automação de muitas tarefas. Aqui estão os melhores plug-ins na minha opinião:

SonarLint

SonarLint permite corrigir erros e vulnerabilidades ao escrever código. Ele destaca problemas de codificação em tempo real, dando ao desenvolvedor instruções claras sobre como corrigi-los, para que você possa corrigi-los antes que o código seja confirmado. Este plugin é necessário porque melhora muito a codificação.

Ajudante Maven

Espero que você esteja usando o Maven. Eu faço! O plug-in Maven Helper fornece:
  • uma forma simples de analisar e eliminar dependências conflitantes;
  • uma maneira fácil de encontrar dependências diretas ou transitivas;
  • etapas para executar/depurar destinos maven para o módulo que contém o arquivo atual ou no módulo raiz;
  • ação para abrir um terminal no caminho atual para o módulo maven;
  • ações para executar/depurar o arquivo de teste atual. Se o maven-surefire-plugin estiver configurado para ignorar ou excluir um teste, o objetivo "verificar" será usado. Vários estilos de configuração podem ser encontrados no GitHub .

CodeMetrics

Este plugin possui indicadores de guias baseados em cálculos de dificuldade personalizados para arquivos Java. Eles fornecem dicas ao desenvolvedor em classes e métodos para que ele possa determinar facilmente o que precisa ser verificado. Embora esta não seja uma métrica padrão, é uma grande aproximação à complexidade ciclomática . Você também pode personalizar o cálculo de complexidade de um projeto alterando as entradas de configuração apropriadas.

Manipulação de cordas

Troca de casos, classificação, filtragem, zoom, alinhamento de colunas, grep, escape, codificação e muito mais...

Amigo JPA

O JPA Buddy torna tudo relacionado ao JPA fácil e rápido. Ele fornece ferramentas para ajudá-lo a trabalhar com Hibernate, Spring Data JPA, Liquibase, Flyway. Principais recursos do JPA Buddy:
  • Entidades JPA: crie e edite entidades, atributos de entidade, retornos de chamada de ciclo de vida, índices e restrições. Suporte para conversores JPA e tipos personalizados do Hibernate. Capacidade de usar anotações Lombok para entidades.
  • Crie implementações corretas dos métodos equals, hashCode e toString para entidades JPA.
  • Intenções de código-fonte, verificações e correções rápidas para declarações de entidades JPA.
  • Exiba graficamente o relacionamento da entidade no painel de estrutura JPA sob o nó de unidades persistentes.
  • Geração automática de logs de alterações do Liquibase e migrações de versões do Flyway: comparações de banco de dados para banco de dados, modelo para banco de dados, modelo para instantâneo.
  • Designer de changelog do Visual Liquibase e assistência de codificação: criação e edição de itens, referência a nomes de tabelas, nomes de colunas, arquivos incluídos e muito mais.
  • Ações: crie um snapshot do Liquibase, execute os comandos “Liquibase update” e “Liquibase updateSQL”.
  • Repositórios de dados Spring: Criação de repositórios, criação de métodos de repositório, edição de propriedades de métodos, criação de uma projeção baseada em uma classe de entidade, extração de uma consulta JPQL.
  • Kotlin: todos os designers visuais oferecem suporte total à geração de código para objetos e repositórios Kotlin.
Eu falei sobre os cinco principais plugins, mas tenho mais um...

Ícones extras

Esta é uma coleção de ícones que adiciona atalhos para arquivos como Markdown, Yaml, Maven, Git e muitos mais. Você se acostumará com eles, pois ajudam a reconhecer arquivos facilmente. Você definitivamente precisará deles.
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION