[CODEWELL] TIPS NÀO CHO MỘT TÁCH JAVA NGON?

14/03/2019 409
1920x770 tips java
CODEWELL

CO-WELL Asia xin giới thiệu tới các bạn một số Tips & Tricks trong quá trình Code Java để có thể tối ưu hơn Source Code cũng như giúp bạn biết vận dụng các lệnh sao cho phù hợp. Có thể bạn đã biết, cũng có thể bạn chưa biết những Tips & Tricks này, hãy đọc để cùng xem bạn biết được bao nhiêu trong số 10 điều chúng tôi đưa ra nhé!

1. Kiểm tra số chẵn lẻ

Thông thường để kiểm tra một số là chẵn hay lẻ, chúng ta thường dùng lệnh sau:

return num % 2 = 1;

Tuy nhiên cách này sẽ không đúng trong trường hợp số âm. Bởi vậy, để đảm bảo lệnh vẫn đúng với cả số âm và dương, chúng ta nên dùng cách sử dụng toán tử logic. Bạn sẽ thấy nhanh hơn rất nhiều. Thử cách dưới đây nhé.

2. Kiểm tra số nguyên tố

Một cách nhanh chóng để kiểm tra một số có phải là số nguyên tố hay không là sử dụng phương thức isProbablePrime() của lớp BigInteger.

3. Nháy đơn hay nháy kép

Trong toán hạng, một nháy khác hai nháy nhé! Khi sử dụng nháy kép các ký tự được coi như một chuỗi, còn đối với nháy đơn các ký tự sẽ được convert sang giá trị nguyên. Vì thế kết quả của các dòng code sau sẽ khác nhau. Hãy luôn nhớ điều này để tránh “bug” không đáng có. Ví dụ:

    System.out.print(“C” + “W”);     // ⇒ Output: CW

     System.out.print(‘C’ + ‘W’);        // ⇒ Output: 154

4. Comment đặc biệt

Trong Java, chúng ta thường được dạy comment sẽ bị bỏ qua và không được thực thi trong chương trình. Tuy nhiên, vẫn sẽ có những trường hợp khiến bản phải ngạc nhiên không hiểu do đâu Comment vẫn được thực thi. Hãy xem ví dụ sau:

Và kết quả là:

⇒ Output:     What’s next

                   Comment executed!

Nguyên nhân của việc này là do trình biên dịch Java đã phân tích mã Unicode \u000d như một ký tự xuống dòng, khi đó source code sẽ biến thành:

   // \u000d

     System.out.println(“Comment executed!”);

Bởi vậy, hãy hết sức lưu ý những trường hợp này để không bị bất ngờ khi check output.

5. Khởi tạo Collection với 2 móc nhọn?

Thông thường để khởi tạo giá trị cho một đối tượng Collection (List, Map, Set, …), chúng ta thường làm như sau:

       List<String> names = new ArrayList<String>();

          names.add(“Co-Well”);

          names.add(“Asia”);

          names.add(“Happy New Year!”);

Tuy nhiên có một cách nhanh hơn đó là khởi tạo bằng 2 móc nhọn. Bạn hãy thử xem!

6. Lấy StackTrace exception log

Mỗi lần gặp lỗi exception khi thực thi chương trình, chúng ta đều muốn biết cụ thể nguyên nhân lỗi do đâu, và cách chúng ta hay làm là sử dụng printStackTrace.

     try {

         // Things to do

     } catch (Exception e) {

         e.printStackTrace();

         System.out.println(e.getMessage());

     }

Nhưng cách này chỉ xem được log trên console và khi muốn lưu log nội dung đầy đủ của exception thì chỉ lấy được exception message. Thay vì đó chúng ta có thể làm như sau:

Hoặc sử dụng hàm getFullStackTrace có sẵn của ExceptionUtils.

7. Vòng lắp có gắn nhãn (labelled loop / named loop)

Khi sử dụng vòng lặp lồng nhau, trường hợp ta muốn thoát (break) hẳn ra vòng lặp bên ngoài thay vì chỉ thoát khỏi vòng lặp hiện tại, cần phải làm thế nào? Câu trả lời là đặt nhãn cho vòng lặp đó. Bạn có thể hình dung rõ hơn qua mô tả dưới đây.

8. Tính toán lũy thừa

Java thực hiện phép XOR để tính toán lũy thừa. Có thể tính toán bằng 2 cách sau:

  • Phương pháp nhân

  • Dùng hàm Math.pow

Về cơ bản, tuy câu lệnh ngắn hơn nhưng chỉ nên sử dụng Math.pow trong trường hợp thực sự cần thiết, bởi nếu xét về hiệu năng, việc sử dụng Math.pow sẽ chậm hơn khá nhiều so với phương pháp nhân thông thường. Thử với ví dụ sau:

Chúng ta có kết quả thời gian xử lý cho thấy Math.pow có thời gian xử lý lớn gấp 8.3 lầm so với phép nhân:

    Multiplication: 8864ms

      Math.Pow: 79751ms

Do vậy, tùy vào mục đích tối ưu của bạn mà hãy lựa chọn một trong 2 cách tính cho phù hợp nhé!

 9. Sử dụng Float hay Double

Java cung cấp 2 kiểu số dấu phẩy động với kích thước dung lượng khác nhau.

  • Float: Số thập phân độ chính xác đơn (độ chính xác thấp hơn, sử dụng ít bộ nhớ hơn).
  • Double: Số thập phân độ chính xác kép (độ chính xác cao hơn, sử dụng nhiều bộ nhớ hơn).

Tuy nhiên, độ chính xác bị thay đổi khi thực hiện convert kiểu dữ liệu qua lại giữa Double và Float. Cụ thể như sau:

Do đó, kiểu Double thường được sử dụng hơn do yếu tố chính xác được đặt lên hàng đầu, trong khi không có sự khác biệt mấy về thời gian xử lý.

10. Tối ưu Source Code với Shorthand

Với những xử lý sau đây ta có thể sử dụng shorthand để tối ưu source code.

  if (!name){

         name = “Co-Well Asia”;

     }

  Tối ưu với Shorthand:

  if (age && age >= 18){

         return true;

     } else {

         return false;

     }

Tối ưu với Shorthand:

  if (userName) {

         logIn(userName);

     } else {

         signUp ();

     }

Tối ưu với Shorthand:

Trên đây là tóm tắt 10 Tips & Tricks cơ bản khi Code Java. Bạn đã mắc phải bao nhiêu “lỗi lầm” trong số cảnh báo này? Nếu bạn biết Tips & Tricks nào khác, hãy chia sẻ với chúng tôi qua phần comment ngay bên dưới.

Bài viết cũng được đăng tải trên Fanpage CO-WELL Asia, nơi có nhiều sự trao đổi, tương tác giữa các Coder với nhau hơn. Xem bài trên Fanpage TẠI ĐÂY và cùng tham gia thảo luận nhé!

Tags: ,