JavaRush /Blog Java /Random-ES /Pausa para el café #73. Cómo mejorar su código Java con S...

Pausa para el café #73. Cómo mejorar su código Java con Streams. Los cinco mejores complementos de IntelliJ IDEA para desarrolladores de Java

Publicado en el grupo Random-ES

Cómo mejorar su código Java con Streams

Fuente: Dev.toPausa para el café #73.  Mejore su código Java con Streams.  Los cinco mejores complementos de IntelliJ IDEA para desarrolladores de Java: 1

¿Qué son las corrientes?

Las secuencias aparecieron por primera vez en Java 8. Según la documentación de Oracle, son clases para admitir operaciones de estilo funcional en secuencias de elementos, como transformaciones de reducción de mapas en colecciones. En términos simples, una secuencia consta de una fuente de datos, seguida de cero o más operaciones intermedias y luego una operación terminal.

¿Qué es una fuente de datos?

  • Colecciones, Listas, Conjuntos, enteros, largos, dobles, matrices, líneas de archivos.

¿Qué son las operaciones intermedias?

  • Filtrar, mapear, ordenar, etc.
  • Estas operaciones devuelven un Stream para que puedan encadenarse a otras operaciones.

¿Qué son las operaciones terminales?

  • Para cada uno, recopilar, reducir, buscar primero, etc.
  • Devuelven un resultado no válido o que no es de transmisión.
  • Si un hilo no tiene una operación de terminal, no se llamará a los intermedios.

Convirtamos una función de estilo imperativo a declarativo usando Streams

Función imperativa (sin transmisiones):

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;
}
Aquí notamos que necesitamos hacer algunas cosas manualmente:
  • Declare una variable de resultado para realizar un seguimiento del resultado.
  • Recorre las cuerdas.
  • Escribe dos declaraciones if (que pueden ser mucho más complejas que este caso).
  • Suma la longitud de cada uno al resultado.

Comprobemos el 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();
}
Entonces, ¿cuál es la diferencia?
  • Obtenemos un objeto Stream llamando a la función stream() .
  • (Operación intermedia) usamos la función de filtro dos veces: cada vez especificamos una condición que deben cumplir solo aquellos elementos a los que queremos pasar en la siguiente fase.
  • (Operación intermedia) asignamos cada objeto String a un int llamando al método de longitud (usando el estilo de referencia del método).
  • (Operación terminal) suma todos los valores int anteriores .

Observaciones

¿No parecía más sencillo el segundo enfoque? Indicamos lo que queríamos, no cómo queríamos hacerlo . Este es el espíritu de la programación declarativa y el objetivo de Stream API en las aplicaciones Java modernas.

Los cinco mejores complementos de IntelliJ IDEA para desarrolladores de Java

Fuente: Los complementos de GitHubPausa para el café #73.  Mejore su código Java con Streams.  Los cinco mejores complementos de IntelliJ IDEA para desarrolladores de Java: 2 pueden resultar muy útiles en muchas situaciones cuando se trabaja con código de forma regular. Son capaces de ampliar la funcionalidad principal, proporcionar diversas integraciones y admitir la automatización de muchas tareas. Aquí están los mejores complementos en mi opinión:

SonarLint

SonarLint te permite corregir errores y vulnerabilidades al escribir código. Destaca los problemas de codificación en tiempo real y le brinda al desarrollador instrucciones claras sobre cómo solucionarlos, para que usted pueda solucionarlos antes de que se envíe el código. Este complemento es necesario porque mejora enormemente la codificación.

Ayudante experto

Espero que estés usando Maven. ¡Sí! El complemento Maven Helper proporciona:
  • una forma sencilla de analizar y eliminar dependencias conflictivas;
  • una manera fácil de encontrar dependencias directas o transitivas;
  • pasos para ejecutar/depurar objetivos maven para el módulo que contiene el archivo actual, o en el módulo raíz;
  • acción para abrir una terminal en la ruta actual al módulo maven;
  • acciones para ejecutar/depurar el archivo de prueba actual. Si maven-surefire-plugin está configurado para omitir o excluir una prueba, se utilizará el objetivo "verificar". Se pueden encontrar varios estilos de configuración en GitHub .

CódigoMétricas

Este complemento tiene indicadores de pestañas basados ​​en cálculos de dificultad personalizados para archivos Java. Le dan al desarrollador sugerencias sobre clases y métodos para que pueda determinar fácilmente qué se debe verificar. Aunque esta no es una métrica estándar, es una aproximación cercana a la complejidad ciclomática . También puede personalizar el cálculo de complejidad de un proyecto cambiando las entradas de configuración apropiadas.

Manipulación de cuerdas

Cambio de casos, clasificación, filtrado, zoom, alineación de columnas, grepping, escape, codificación y mucho más...

Compañero de JPA

JPA Buddy hace que todo lo relacionado con JPA sea fácil y rápido. Proporciona herramientas para ayudarle a trabajar con Hibernate, Spring Data JPA, Liquibase, Flyway. Características clave de JPA Buddy:
  • Entidades JPA: cree y edite entidades, atributos de entidades, devoluciones de llamadas del ciclo de vida, índices y restricciones. Soporte para convertidores JPA y tipos personalizados de Hibernate. Posibilidad de utilizar anotaciones de Lombok para entidades.
  • Cree implementaciones correctas de los métodos equals, hashCode y toString para entidades JPA.
  • Intentos, comprobaciones y soluciones rápidas del código fuente para declaraciones de entidades JPA.
  • Muestre gráficamente la relación entre entidades en el panel de estructura JPA debajo del nodo de unidades persistentes.
  • Generación automática de registros de cambios de Liquibase y migraciones de versiones de Flyway: comparaciones de base de datos a base de datos, de modelo a base de datos, de modelo a instantánea.
  • Diseñador de registro de cambios de Visual Liquibase y asistencia de codificación: creación y edición de elementos, referencia de nombres de tablas, nombres de columnas, archivos incluidos y más.
  • Acciones: cree una instantánea de Liquibase, ejecute los comandos “Liquibase update” y “Liquibase updateSQL”.
  • Repositorios de datos de Spring: creación de repositorios, creación de métodos de repositorio, edición de propiedades de métodos, creación de una proyección basada en una clase de entidad, extracción de una consulta JPQL.
  • Kotlin: todos los diseñadores visuales admiten totalmente la generación de código para objetos y repositorios de Kotlin.
Dije sobre los cinco complementos principales, pero tengo uno más...

Iconos adicionales

Esta es una colección de íconos que agrega accesos directos a archivos como Markdown, Yaml, Maven, Git y muchos más. Te acostumbrarás a ellos ya que te ayudarán a reconocer archivos fácilmente. Definitivamente los necesitarás.
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION