0

Viết code java dễ hiểu hơn

Các ngôn ngữ JVM hiện đại như Kotlin, Groovy, Scala và một số ngôn ngữ khác cung cấp nhiều tính năng cho phép bạn viết code một cách ngắn gọn và diễn cảm hơn. Ngay cả Java (luôn luôn được sử dụng rất thận trọng và có lý do tốt), trong phiên bản mới nhất (v8) đã giới thiệu cú pháp lambda để làm cho đoạn code mang tính biểu cảm hơn.

Trước Java 8 IntelliJ IDEA đã sử dụng tính năng của mình để mô phỏng cú pháp lambda, làm cho mã trở nên dễ đọc hơn:

Nếu bạn expand hoặc hover vào đoạn code, sẽ nhìn thấy như sau:

Nếu bạn sử dụng Java 7 hoặc một phiên bản cũ hơn, IntelliJ IDEA vẫn gập lại mã như vậy để dễ đọc hơn. Ở đây, chúng ta sẽ mở rộng tính năng gấp của IDE:

Chuỗi Interpolated

Giả sử với ví dụ:

Nếu Java cung cấp chuỗi interpolated, nó sẽ như sau:

Plugin mô phỏng chính xác thông qua việc gấp lại, ngay cả khi một chuỗi nội suy có chứa các biểu thức:

Chú ý, các folding không phá vỡ cú pháp higtlighting hoặc code navigation.

String concatenation

Và với ví dụ sau:

Nếu chúng ta áp dụng khái niệm chuyển đổi tiềm ẩn và các toán tử được cải tiến, chúng ta sẽ nhận được mã sau:

Vẫn clear nhưng súc tích và dễ đọc hơn.

Slice operations trong strings và lists

với ví dụ sau:

Ở đây chúng ta cần một chuỗi con, đề cập đến chiều dài của chuỗi. Điều gì sẽ xảy ra nếu Java cung cấp phương thức slice do Python cung cấp? Nếu bạn bật tùy chọn tương ứng trong plugin, bạn sẽ nhận được tính năng này mô phỏng trong mã Java:

Variables declaration

Ở đây chúng ta sử dụng các biến "int" để lưu trữ trạng thái. Kể từ khi "final" không được thi hành bởi Java, ở đây tất cả các "variables" là có thể thay đổi. Điều gì sẽ xảy ra nếu Java có type inference, và tất cả các developer luôn sử dụng "final" đúng cách? Nghe học thuật nhưng IDE có thể mô phỏng được thông qua phân tích gấp và phân luồng dữ liệu:

Với cách này, code dễ hiểu hơn rất nhiều.

For loops

Điều gì xảy ra nếu Java hỗ trợ tuples? Code của chúng ta sẽ đỡ rườm rà, và vẫn dễ dọc:

Điều này thậm chí có thể còn súc tích hơn khi chúng ta sử dụng nó cùng với tùy chọn gấp trước đó:

Chúng ta hãy nhìn vào một ví dụ khác, khi mà chúng ta lặp lại một mảng nhưng không truy cập các mục của nó:

Liệu có thể viết một cách ngắn gọn hơn không nếu chúng ta có nhiều literal được hỗ trợ bởi Java? Vâng, ít nhất là các plugin làm cho nó có thể thông qua emulation:

Collections

Điều gì sẽ xảy ra nếu Java cho phép các toán tử được nâng cao và collections cung cấp add, addAll, remove và removeAll? Nhìn vào mã này:

Plugin mô phỏng các toán tử này để làm cho ngữ nghĩa rõ ràng hơn một chút:

một ví dụ khác:

Điều gì sẽ xảy ra nếu list có phương pháp first () và last () (ví dụ như các ngôn ngữ JVM khác)?

nó sẽ dễ đọc hơn.


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí