JavaRush /Blog Java /Random-VI /Nghỉ giải lao #73. Cách cải thiện mã Java của bạn bằng lu...

Nghỉ giải lao #73. Cách cải thiện mã Java của bạn bằng luồng Năm plugin IntelliJ IDEA tốt nhất dành cho nhà phát triển Java

Xuất bản trong nhóm

Cách cải thiện mã Java của bạn bằng luồng

Nguồn: Dev.toNghỉ giải lao #73.  Cải thiện mã Java của bạn bằng Luồng.  Năm plugin IntelliJ IDEA tốt nhất dành cho nhà phát triển Java - 1

Luồng là gì?

Các luồng xuất hiện lần đầu tiên trong Java 8. Theo tài liệu của Oracle, chúng là các lớp để hỗ trợ các hoạt động kiểu chức năng trên các luồng phần tử, chẳng hạn như các phép biến đổi thu nhỏ bản đồ trên các bộ sưu tập. Nói một cách đơn giản, một luồng bao gồm một nguồn dữ liệu, theo sau là 0 hoặc nhiều hoạt động trung gian và sau đó là hoạt động đầu cuối.

Nguồn dữ liệu là gì?

  • Bộ sưu tập, Danh sách, Bộ, int, long, double, mảng, dòng tệp.

Hoạt động trung gian là gì?

  • Lọc, bản đồ, sắp xếp, v.v.
  • Các hoạt động này trả về một Luồng để chúng có thể được kết nối với các hoạt động khác.

Hoạt động đầu cuối là gì?

  • ForEach, thu thập, giảm bớt, findFirst, v.v.
  • Chúng trả về kết quả không hợp lệ hoặc không phải luồng.
  • Nếu một luồng không có thao tác đầu cuối thì các phần tử trung gian sẽ không được gọi.

Hãy chuyển đổi một hàm từ kiểu mệnh lệnh sang kiểu khai báo bằng Luồng

Hàm mệnh lệnh (Không có luồng):

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;
}
Ở đây chúng tôi nhận thấy rằng chúng tôi cần thực hiện một số việc theo cách thủ công:
  • Khai báo một biến kết quả để theo dõi kết quả.
  • Lặp qua các chuỗi.
  • Viết hai câu lệnh if (có thể phức tạp hơn nhiều so với trường hợp này).
  • Thêm độ dài của mỗi vào kết quả.

Hãy kiểm tra kiểu khai báo (Luồng):

private int getResult_Declarative(List<String> strings){
    return strings.
            stream().
            filter(s -> !isDigit(s.charAt(0))).
            filter(s -> !s.contains("_")).
            mapToInt(String::length).
            sum();
}
Vậy sự khác biệt là gì?
  • Chúng ta có được một đối tượng Stream bằng cách gọi hàm stream() .
  • (Hoạt động trung gian) chúng tôi sử dụng chức năng lọc hai lần - mỗi lần chúng tôi chỉ định một điều kiện mà chỉ những phần tử mà chúng tôi muốn chuyển đến trong giai đoạn tiếp theo phải đáp ứng.
  • (Thao tác trung gian) chúng ta ánh xạ từng đối tượng String thành một int bằng cách gọi phương thức length (sử dụng kiểu tham chiếu phương thức).
  • (Hoạt động đầu cuối) tính tổng tất cả các giá trị int trước đó .

Quan sát

Cách tiếp cận thứ hai có vẻ đơn giản hơn phải không? Chúng tôi chỉ ra những gì chúng tôi muốn chứ không phải cách chúng tôi muốn làm điều đó . Đây là tinh thần của lập trình khai báo và mục tiêu của API Stream trong các ứng dụng Java hiện đại.

Năm plugin IntelliJ IDEA tốt nhất dành cho nhà phát triển Java

Nguồn: GitHubNghỉ giải lao #73.  Cải thiện mã Java của bạn bằng Luồng.  Năm plugin IntelliJ IDEA tốt nhất dành cho nhà phát triển Java - 2 Plugin có thể rất hữu ích trong nhiều trường hợp khi làm việc với mã một cách thường xuyên. Chúng có khả năng mở rộng chức năng cốt lõi, cung cấp nhiều tích hợp khác nhau và hỗ trợ tự động hóa nhiều tác vụ. Dưới đây là những plugin tốt nhất theo ý kiến ​​​​của tôi:

SonarLint

SonarLint cho phép bạn sửa lỗi và lỗ hổng khi viết code. Nó nêu bật các vấn đề về mã hóa trong thời gian thực, cung cấp cho nhà phát triển hướng dẫn rõ ràng về cách khắc phục, để bạn có thể khắc phục trước khi mã được chuyển giao. Plugin này là cần thiết vì nó cải thiện đáng kể việc mã hóa.

Người trợ giúp Maven

Tôi hy vọng bạn đang sử dụng Maven? Tôi làm! Plugin Trình trợ giúp Maven cung cấp:
  • một cách đơn giản để phân tích và loại bỏ các phụ thuộc xung đột;
  • một cách dễ dàng để tìm các phụ thuộc trực tiếp hoặc bắc cầu;
  • các bước để chạy/gỡ lỗi mục tiêu maven cho mô-đun chứa tệp hiện tại hoặc trong mô-đun gốc;
  • hành động để mở một thiết bị đầu cuối tại đường dẫn hiện tại tới mô-đun maven;
  • hành động để chạy/gỡ lỗi tệp thử nghiệm hiện tại. Nếu maven-surefire-plugin được định cấu hình để bỏ qua hoặc loại trừ thử nghiệm, mục tiêu "xác minh" sẽ được sử dụng. Bạn có thể tìm thấy nhiều kiểu cấu hình khác nhau trên GitHub .

Mã số liệu

Plugin này có các chỉ báo tab dựa trên tính toán độ khó tùy chỉnh cho các tệp Java. Chúng đưa ra gợi ý cho nhà phát triển về các lớp và phương thức để anh ta có thể dễ dàng xác định những gì cần kiểm tra. Mặc dù đây không phải là số liệu tiêu chuẩn nhưng nó gần đúng với độ phức tạp chu kỳ . Bạn cũng có thể tùy chỉnh tính toán độ phức tạp cho dự án bằng cách thay đổi các mục cấu hình phù hợp.

Thao tác chuỗi

Chuyển đổi trường hợp, sắp xếp, lọc, thu phóng, căn chỉnh cột, sắp xếp, thoát, mã hóa và nhiều hơn nữa...

bạn thân JPA

JPA Buddy làm cho mọi thứ liên quan đến JPA trở nên dễ dàng và nhanh chóng. Nó cung cấp các công cụ giúp bạn làm việc với Hibernate, Spring Data JPA, Liquibase, Flyway. Các tính năng chính của JPA Buddy:
  • Thực thể JPA: Tạo và chỉnh sửa các thực thể, thuộc tính thực thể, lệnh gọi lại vòng đời, chỉ mục và các ràng buộc. Hỗ trợ trình chuyển đổi JPA và các loại tùy chỉnh Hibernate. Khả năng sử dụng chú thích Lombok cho các thực thể.
  • Tạo cách triển khai chính xác các phương thức bằng, hashCode và toString cho các thực thể JPA.
  • Ý định, kiểm tra và sửa lỗi nhanh của mã nguồn đối với các khai báo thực thể JPA.
  • Hiển thị đồ họa mối quan hệ thực thể trong bảng cấu trúc JPA dưới nút đơn vị liên tục.
  • Tự động tạo nhật ký thay đổi Liquibase và di chuyển phiên bản Flyway: so sánh giữa cơ sở dữ liệu với cơ sở dữ liệu, mô hình với cơ sở dữ liệu, so sánh giữa mô hình với ảnh chụp nhanh.
  • Hỗ trợ mã hóa và thiết kế nhật ký thay đổi Liquibase trực quan: tạo và chỉnh sửa các mục, tham chiếu tên bảng, tên cột, tệp được bao gồm, v.v.
  • Hành động: tạo ảnh chụp nhanh của Liquibase, thực hiện các lệnh “Liquibase update” và “Liquibase updateSQL”.
  • Spring Data Repositories: Tạo kho lưu trữ, tạo phương thức kho lưu trữ, chỉnh sửa thuộc tính phương thức, tạo phép chiếu dựa trên lớp thực thể, trích xuất truy vấn JPQL.
  • Kotlin: Tất cả các nhà thiết kế hình ảnh đều hỗ trợ đầy đủ việc tạo mã cho các đối tượng và kho lưu trữ của Kotlin.
Tôi đã nói về năm plugin hàng đầu, nhưng tôi còn một plugin nữa...

Biểu tượng bổ sung

Đây là bộ sưu tập biểu tượng bổ sung các phím tắt cho các tệp như Markdown, Yaml, Maven, Git và nhiều tệp khác. Bạn sẽ quen với chúng vì chúng giúp bạn nhận dạng tập tin một cách dễ dàng. Bạn chắc chắn sẽ cần chúng.
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION