JavaRush /Blog Java /Random-FR /Pause café #73. Comment améliorer votre code Java avec St...

Pause café #73. Comment améliorer votre code Java avec Streams. Cinq meilleurs plugins IntelliJ IDEA pour les développeurs Java

Publié dans le groupe Random-FR

Comment améliorer votre code Java avec Streams

Source : Dev.toPause café #73.  Améliorez votre code Java avec Streams.  Cinq meilleurs plugins IntelliJ IDEA pour les développeurs Java - 1

Que sont les flux ?

Les flux sont apparus pour la première fois dans Java 8. Selon la documentation Oracle, il s'agit de classes permettant de prendre en charge des opérations de style fonctionnel sur des flux d'éléments, telles que des transformations de réduction de carte sur des collections. En termes simples, un flux se compose d’une source de données, suivie de zéro ou plusieurs opérations intermédiaires, puis d’une opération terminale.

Qu'est-ce qu'une source de données ?

  • Collections, listes, ensembles, entiers, longs, doubles, tableaux, lignes de fichiers.

Que sont les opérations intermédiaires ?

  • Filtrer, cartographier, trier, etc.
  • Ces opérations renvoient un Stream afin qu'elles puissent être enchaînées à d'autres opérations.

Que sont les opérations du terminal ?

  • ForEach, collecter, réduire, findFirst, etc.
  • Ils renvoient un résultat invalide ou hors flux.
  • Si un thread n’a pas d’opération de terminal, les intermédiaires ne seront pas appelés.

Convertissons une fonction du style impératif au style déclaratif à l'aide de Streams

Fonction impérative (Pas de flux) :

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;
}
Ici, nous remarquons que nous devons faire quelques choses manuellement :
  • Déclarez une variable de résultat pour garder une trace du résultat.
  • Parcourez les cordes.
  • Écrivez deux instructions if (qui peuvent être beaucoup plus complexes que ce cas).
  • Ajoutez la longueur de chacun au résultat.

Vérifions le style déclaratif (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();
}
Alors quelle est la différence ?
  • Nous obtenons un objet Stream en appelant la fonction stream() .
  • (Opération intermédiaire) nous utilisons la fonction de filtre deux fois - chaque fois que nous spécifions une condition qui doit être remplie uniquement par les éléments vers lesquels nous souhaitons passer dans la phase suivante.
  • (Opération intermédiaire) nous mappons chaque objet String à un int en appelant la méthode length (en utilisant le style de référence de méthode).
  • (Opération du terminal) somme de toutes les valeurs int précédentes .

Observations

La deuxième approche ne vous semble-t-elle pas plus simple ? Nous avons indiqué ce que nous voulions, pas comment nous voulions le faire . C'est l'esprit de la programmation déclarative et l'objectif de l'API Stream dans les applications Java modernes.

Cinq meilleurs plugins IntelliJ IDEA pour les développeurs Java

Source : GitHubPause café #73.  Améliorez votre code Java avec Streams.  Cinq meilleurs plugins IntelliJ IDEA pour les développeurs Java - 2 Les plugins peuvent être très utiles dans de nombreuses situations lorsque vous travaillez régulièrement avec du code. Ils sont capables d'étendre les fonctionnalités de base, de fournir diverses intégrations et de prendre en charge l'automatisation de nombreuses tâches. Voici les meilleurs plugins à mon avis :

SonarLint

SonarLint vous permet de corriger les erreurs et les vulnérabilités lors de l'écriture du code. Il met en évidence les problèmes de codage en temps réel, donnant au développeur des instructions claires sur la façon de les résoudre, afin que vous puissiez les résoudre avant que le code ne soit validé. Ce plugin est nécessaire car il améliore grandement le codage.

Assistant Maven

J'espère que vous utilisez Maven ? Je fais! Le plugin Maven Helper fournit :
  • un moyen simple d'analyser et d'éliminer les dépendances conflictuelles ;
  • un moyen simple de trouver des dépendances directes ou transitives ;
  • étapes pour exécuter/déboguer les cibles maven pour le module contenant le fichier actuel, ou dans le module racine ;
  • action pour ouvrir un terminal sur le chemin actuel vers le module maven ;
  • actions pour exécuter/déboguer le fichier de test actuel. Si maven-surefire-plugin est configuré pour ignorer ou exclure un test, l'objectif « vérifier » sera utilisé. Différents styles de configuration peuvent être trouvés sur GitHub .

CodeMetrics

Ce plugin dispose d'indicateurs d'onglets basés sur des calculs de difficulté personnalisés pour les fichiers Java. Ils donnent au développeur des conseils sur les classes et les méthodes afin qu'il puisse facilement déterminer ce qui doit être vérifié. Bien qu'il ne s'agisse pas d'une mesure standard, il s'agit d'une approximation étroite de la complexité cyclomatique . Vous pouvez également personnaliser le calcul de complexité d'un projet en modifiant les entrées de configuration appropriées.

Manipulation des chaînes

Changement de casse, tri, filtrage, zoom, alignement des colonnes, saisie, échappement, encodage et bien plus encore...

Copain JPA

JPA Buddy rend tout ce qui concerne JPA simple et rapide. Il fournit des outils pour vous aider à travailler avec Hibernate, Spring Data JPA, Liquibase, Flyway. Principales fonctionnalités de JPA Buddy :
  • Entités JPA : créez et modifiez des entités, des attributs d'entité, des rappels de cycle de vie, des index et des contraintes. Prise en charge des convertisseurs JPA et des types personnalisés Hibernate. Possibilité d'utiliser les annotations Lombok pour les entités.
  • Créez des implémentations correctes des méthodes equals, hashCode et toString pour les entités JPA.
  • Intentions de code source, vérifications et correctifs rapides pour les déclarations d'entité JPA.
  • Affichez graphiquement la relation d'entité dans le panneau de structure JPA sous le nœud des unités persistantes.
  • Génération automatique de journaux de modifications Liquibase et migrations de versions Flyway : comparaisons de base de données à base de données, de modèle à base de données, de modèle à instantané.
  • Concepteur de journaux de modifications Visual Liquibase et assistance au codage : création et modification d'éléments, référencement des noms de tables, de colonnes, de fichiers inclus et bien plus encore.
  • Actions : créez un instantané de Liquibase, exécutez les commandes « Liquibase update » et « Liquibase updateSQL ».
  • Spring Data Repositories : Création de référentiels, création de méthodes de référentiel, édition des propriétés de méthode, création d'une projection basée sur une classe d'entité, extraction d'une requête JPQL.
  • Kotlin : tous les concepteurs visuels prennent entièrement en charge la génération de code pour les objets et les référentiels Kotlin.
J'ai parlé des cinq meilleurs plugins, mais j'en ai un de plus...

Icônes supplémentaires

Il s'agit d'une collection d'icônes qui ajoute des raccourcis vers des fichiers tels que Markdown, Yaml, Maven, Git et bien d'autres. Vous vous y habituerez car ils vous aideront à reconnaître facilement les fichiers. Vous en aurez certainement besoin.
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION