JavaRush /Java Blog /Random-IT /Pausa caffè #73. Come migliorare il tuo codice Java con g...

Pausa caffè #73. Come migliorare il tuo codice Java con gli stream. Cinque migliori plugin IntelliJ IDEA per sviluppatori Java

Pubblicato nel gruppo Random-IT

Come migliorare il tuo codice Java con gli stream

Fonte: Dev.toPausa caffè #73.  Migliora il tuo codice Java con Streams.  Cinque migliori plugin IntelliJ IDEA per sviluppatori Java - 1

Cosa sono gli stream?

Gli stream sono apparsi per la prima volta in Java 8. Secondo la documentazione Oracle, sono classi per supportare operazioni di stile funzionale su flussi di elementi, come trasformazioni di riduzione della mappa sulle raccolte. In termini semplici, un flusso è costituito da un'origine dati, seguita da zero o più operazioni intermedie e quindi da un'operazione terminale.

Cos'è un'origine dati?

  • Collezioni, liste, set, int, long, double, array, righe di file.

Cosa sono le operazioni intermedie?

  • Filtra, mappa, ordina, ecc.
  • Queste operazioni restituiscono un flusso in modo che possano essere concatenate ad altre operazioni.

Cosa sono le operazioni terminali?

  • ForEach, raccogli, riduci, trovaPrimo, ecc.
  • Restituiscono un risultato non valido o non in streaming.
  • Se un thread non dispone di un'operazione terminale, gli intermedi non verranno chiamati.

Convertiamo una funzione dallo stile imperativo a quello dichiarativo utilizzando Streams

Funzione imperativa (nessun flusso):

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;
}
Qui notiamo che dobbiamo fare alcune cose manualmente:
  • Dichiarare una variabile di risultato per tenere traccia del risultato.
  • Passa attraverso le corde.
  • Scrivi due istruzioni if ​​(che possono essere molto più complesse di questo caso).
  • Aggiungi la lunghezza di ciascuno al risultato.

Controlliamo lo stile dichiarativo (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();
}
Allora qual è la differenza?
  • Otteniamo un oggetto Stream chiamando la funzione stream() .
  • (Operazione intermedia) utilizziamo la funzione filtro due volte: ogni volta specifichiamo una condizione che deve essere soddisfatta solo da quegli elementi a cui vogliamo passare nella fase successiva.
  • (Operazione intermedia) mappiamo ogni oggetto String a un int chiamando il metodo length (usando lo stile di riferimento del metodo).
  • (Operazione da terminale) somma tutti i valori int precedenti .

Osservazioni

Il secondo approccio non vi sembrava più semplice? Abbiamo indicato cosa volevamo, non come volevamo farlo . Questo è lo spirito della programmazione dichiarativa e l'obiettivo dell'API Stream nelle moderne applicazioni Java.

Cinque migliori plugin IntelliJ IDEA per sviluppatori Java

Fonte: GitHubPausa caffè #73.  Migliora il tuo codice Java con Streams.  Cinque migliori plugin IntelliJ IDEA per sviluppatori Java - 2 I plugin possono essere molto utili in molte situazioni quando si lavora regolarmente con il codice. Sono in grado di estendere le funzionalità principali, fornire varie integrazioni e supportare l'automazione di molte attività. Ecco i migliori plugin secondo me:

SonarLint

SonarLint ti consente di correggere errori e vulnerabilità durante la scrittura del codice. Evidenzia i problemi di codifica in tempo reale, fornendo allo sviluppatore istruzioni chiare su come risolverli, in modo che tu possa risolverli prima che il codice venga impegnato. Questo plugin è necessario perché migliora notevolmente la codifica.

Aiutante esperto

Spero che tu stia usando Maven? Io faccio! Il plugin Maven Helper fornisce:
  • un modo semplice per analizzare ed eliminare le dipendenze in conflitto;
  • un modo semplice per trovare dipendenze dirette o transitive;
  • passaggi per eseguire/debug di target Maven per il modulo contenente il file corrente o nel modulo root;
  • azione per aprire un terminale nel percorso corrente del modulo Maven;
  • azioni per eseguire/debug del file di test corrente. Se il plugin maven-surefire è configurato per saltare o escludere un test, verrà utilizzato l'obiettivo "verifica". Vari stili di configurazione possono essere trovati su GitHub .

CodeMetrics

Questo plugin dispone di indicatori di scheda basati su calcoli personalizzati di difficoltà per i file Java. Forniscono allo sviluppatore suggerimenti su classi e metodi in modo che possa facilmente determinare cosa deve essere controllato. Sebbene questa non sia una metrica standard, è una buona approssimazione alla complessità ciclomatica . È inoltre possibile personalizzare il calcolo della complessità per un progetto modificando le voci di configurazione appropriate.

Manipolazione delle stringhe

Scambio di casi, ordinamento, filtraggio, zoom, allineamento di colonne, grepping, escape, codifica e molto altro ancora...

Amico dell'APP

JPA Buddy rende tutto ciò che riguarda JPA facile e veloce. Fornisce strumenti per aiutarti a lavorare con Hibernate, Spring Data JPA, Liquibase, Flyway. Caratteristiche principali di JPA Buddy:
  • Entità JPA: crea e modifica entità, attributi di entità, callback del ciclo di vita, indici e vincoli. Supporto per convertitori JPA e tipi personalizzati di Hibernate. Possibilità di utilizzare le annotazioni Lombok per le entità.
  • Creare implementazioni corrette dei metodi equals, hashCode e toString per le entità JPA.
  • Intenti, controlli e soluzioni rapide del codice sorgente per le dichiarazioni di entità JPA.
  • Visualizza graficamente la relazione tra entità nel pannello della struttura JPA sotto il nodo delle unità persistenti.
  • Generazione automatica di registri delle modifiche di Liquibase e migrazioni delle versioni Flyway: confronti da database a database, da modello a database, da modello a snapshot.
  • Designer del registro delle modifiche di Visual Liquibase e assistenza nella codifica: creazione e modifica di elementi, riferimento a nomi di tabelle, nomi di colonne, file inclusi e altro ancora.
  • Azioni: creare uno snapshot di Liquibase, eseguire i comandi “Liquibase update” e “Liquibase updateSQL”.
  • Spring Data Repository: creazione di repository, creazione di metodi di repository, modifica delle proprietà del metodo, creazione di una proiezione basata su una classe di entità, estrazione di una query JPQL.
  • Kotlin: tutti i visual designer supportano completamente la generazione di codice per oggetti e repository Kotlin.
Ho detto dei primi cinque plugin, ma ne ho uno in più...

Icone aggiuntive

Questa è una raccolta di icone che aggiunge scorciatoie a file come Markdown, Yaml, Maven, Git e molti altri. Ti abituerai perché ti aiutano a riconoscere facilmente i file. Ne avrai sicuramente bisogno.
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION