JavaRush /Java Blog /Random-KO /커피 브레이크 #73. 스트림으로 Java 코드를 개선하는 방법 Java 개발자를 위한 5가지 최고의 ...

커피 브레이크 #73. 스트림으로 Java 코드를 개선하는 방법 Java 개발자를 위한 5가지 최고의 IntelliJ IDEA 플러그인

Random-KO 그룹에 게시되었습니다

스트림으로 Java 코드를 개선하는 방법

출처 : Dev.to커피 브레이크 #73.  Streams로 Java 코드를 개선하세요.  Java 개발자를 위한 5가지 최고의 IntelliJ IDEA 플러그인 - 1

스트림이란 무엇입니까?

스트림은 Java 8에서 처음 등장했습니다. Oracle 설명서에 따르면 스트림은 컬렉션에 대한 맵 축소 변환과 같은 요소 스트림에 대한 기능적 스타일 작업을 지원하기 위한 클래스입니다. 간단히 말해서 스트림은 데이터 소스, 0개 이상의 중간 작업, 터미널 작업으로 구성됩니다.

데이터 원본이란 무엇입니까?

  • 컬렉션, 목록, 세트, ​​int, long, double, 배열, 파일 라인.

중간 작업이란 무엇입니까?

  • 필터, 맵, 정렬 등
  • 이러한 작업은 Stream을 반환하므로 다른 작업에 연결할 수 있습니다.

터미널 운영이란 무엇입니까?

  • ForEach, 수집, 축소, findFirst 등
  • 유효하지 않거나 스트림이 아닌 결과를 반환합니다.
  • 스레드에 터미널 작업이 없으면 중간 항목이 호출되지 않습니다.

Streams를 사용하여 명령형 스타일에서 선언형 스타일로 함수를 변환해 보겠습니다.

필수 기능(스트림 없음):

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;
}
여기서는 몇 가지 작업을 수동으로 수행해야 함을 알 수 있습니다.
  • 결과를 추적하려면 결과 변수를 선언하세요.
  • 문자열을 반복합니다.
  • 두 개의 if 문을 작성합니다 (이 경우보다 훨씬 더 복잡할 수 있음).
  • 결과에 각각의 길이를 추가합니다.

선언적 스타일(스트림)을 확인해 보겠습니다.

private int getResult_Declarative(List<String> strings){
    return strings.
            stream().
            filter(s -> !isDigit(s.charAt(0))).
            filter(s -> !s.contains("_")).
            mapToInt(String::length).
            sum();
}
그렇다면 차이점은 무엇입니까?
  • stream() 함수를 호출하여 Stream 객체를 얻습니다 .
  • (중간 작업) 필터 기능을 두 번 사용합니다. 매번 다음 단계에서 이동하려는 요소만 충족해야 하는 조건을 지정합니다.
  • (중간 작업) 길이 메소드를 호출하여 (메서드 참조 스타일을 사용하여) 각 String 객체를 int 에 매핑합니다 .
  • (터미널 작업) 이전의 모든 int 값을 합산합니다 .

관찰

두 번째 접근 방식이 더 간단해 보이지 않았나요? 우리는 원하는 방식이 아니라 원하는 것을 표시했습니다 . 이것이 선언적 프로그래밍의 정신이자 최신 Java 애플리케이션에서 Stream API의 목표입니다.

Java 개발자를 위한 5가지 최고의 IntelliJ IDEA 플러그인

출처: GitHub커피 브레이크 #73.  Streams로 Java 코드를 개선하세요.  Java 개발자를 위한 최고의 IntelliJ IDEA 플러그인 5개 - 2 플러그인은 정기적으로 코드 작업을 할 때 여러 상황에서 매우 유용할 수 있습니다. 핵심 기능을 확장하고 다양한 통합을 제공하며 많은 작업의 자동화를 지원할 수 있습니다. 내 생각에 최고의 플러그인은 다음과 같습니다.

SonarLint

SonarLint를 사용하면 코드 작성 시 오류와 취약점을 수정할 수 있습니다. 실시간으로 코딩 문제를 강조 표시하여 개발자에게 문제 해결 방법에 대한 명확한 지침을 제공하므로 코드가 커밋되기 전에 문제를 해결할 수 있습니다. 이 플러그인은 코딩을 크게 향상시키기 때문에 필요합니다.

메이븐 도우미

Maven을 사용하고 계시나요? 그래요! Maven Helper 플러그인은 다음을 제공합니다.
  • 충돌하는 종속성을 분석하고 제거하는 간단한 방법
  • 직접적 또는 전이적 종속성을 찾는 쉬운 방법
  • 현재 파일이 포함된 모듈이나 루트 모듈에 대한 Maven 대상을 실행/디버깅하는 단계;
  • Maven 모듈의 현재 경로에서 터미널을 여는 작업;
  • 현재 테스트 파일을 실행/디버깅하는 작업입니다. maven-surefire-plugin이 테스트를 건너뛰거나 제외하도록 구성된 경우 "확인" 목표가 사용됩니다. 다양한 구성 스타일은 GitHub에서 찾을 수 있습니다 .

코드메트릭스

이 플러그인에는 Java 파일에 대한 사용자 정의 난이도 계산을 기반으로 하는 탭 표시기가 있습니다. 이는 개발자가 확인해야 할 사항을 쉽게 결정할 수 있도록 클래스와 메서드에 힌트를 제공합니다. 이는 표준 측정항목은 아니지만 순환 복잡도 에 가까운 근사치입니다 . 적절한 구성 항목을 변경하여 프로젝트의 복잡성 계산을 사용자 정의할 수도 있습니다.

문자열 조작

대소문자 전환, 정렬, 필터링, 확대/축소, 열 정렬, 파악, 이스케이프, 인코딩 등...

JPA 버디

JPA Buddy는 JPA와 관련된 모든 것을 쉽고 빠르게 만듭니다. Hibernate, Spring Data JPA, Liquibase, Flyway 작업에 도움이 되는 도구를 제공합니다. JPA Buddy의 주요 기능:
  • JPA 엔터티: 엔터티, 엔터티 속성, 수명 주기 콜백, 인덱스 및 제약 조건을 생성하고 편집합니다. JPA 변환기 및 Hibernate 사용자 정의 유형을 지원합니다. 엔터티에 Lombok 주석을 사용하는 기능.
  • JPA 엔터티에 대한 equals, hashCode 및 toString 메소드의 올바른 구현을 작성하십시오.
  • JPA 엔터티 선언에 대한 소스 코드 의도, 검사 및 빠른 수정 사항입니다.
  • 영구 단위 노드 아래 JPA 구조 패널에 엔터티 관계를 그래픽으로 표시합니다.
  • Liquibase 변경 로그 자동 생성 및 Flyway 버전 마이그레이션: 데이터베이스 간, 모델 간, 모델 간 비교.
  • Visual Liquibase 변경 로그 디자이너 및 코딩 지원: 항목 생성 및 편집, 테이블 이름 참조, 열 이름, 포함된 파일 등.
  • 작업: Liquibase의 스냅샷을 생성하고 "Liquibase update" 및 "Liquibase updateSQL" 명령을 실행합니다.
  • Spring 데이터 리포지토리: 리포지토리 생성, 리포지토리 메서드 생성, 메서드 속성 편집, 엔터티 클래스 기반 프로젝션 생성, JPQL 쿼리 추출.
  • Kotlin: 모든 시각적 디자이너는 Kotlin 개체 및 저장소에 대한 코드 생성을 완벽하게 지원합니다.
상위 5개 플러그인에 대해 말씀드렸지만, 한 가지가 더 있습니다...

추가 아이콘

Markdown, Yaml, Maven, Git 등과 같은 파일에 대한 바로가기를 추가하는 아이콘 모음입니다. 파일을 쉽게 인식할 수 있도록 도와주므로 익숙해질 것입니다. 당신은 확실히 그것들이 필요할 것입니다.
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION