Cách gỡ rối những lỗi thường gặp trong Java [4] – Elementary

iJava-web-logo-3

    Bài viết này trình bày một lỗi thường hay mắc phải khi lập trình. Đó là cách sử dụng elementary. Chương trình minh họa cho bài viết này chỉ đơn giản là một chương trình cộng hai số. Vậy theo bạn chương trình sau đây in ra nội dung gì?

// thanhcuong.wordpress.com
public class Main
{
    public static void main(String[] args) {
       System.out.println(12345 + 5432l);
    }
}

–   Nhìn bề ngoài, nó trông giống như một bài toán dễ dàng – dễ đến mức ta có thể giải nó mà không cần đến bút hoặc giấy. Các chữ số của toán hạng ở phía bên trái tăng từ 1 –> 5, và các chữ số của toán hạng phải giảm dần. Do đó, các tổng của các chữ số tương ứng vẫn không đổi và chương trình này chắc chắn phải in ra 66666. Chỉ có một vấn đề với sự phân tích này: Khi bạn chạy chương trình, nó in 17777. Có thể Java không thích in ra một con số đáng ghét như vậy? Confused smile Có vẻ điều này không phải là một lời giải thích hợp lý.

–   Mọi thứ hiếm khi là những gì mà chúng ta nhìn thấy. Chúng ta hãy xem kỹ hai toán hạng của toán tử cộng. Chúng ta cộng giá trị int 12345 với giá trị long 54321. Chú ý sự khác biệt tinh vi về hình dáng giữa chữ số 1 ở đầu toán hạng trái và chữ L thường (l) ở cuối toán hạng phải. Chữ số 1 có một góc nhọn giữ nét ngang hoặc cánh tay và nét dọc hoặc thân. Trái lại, chữ thường l có một góc vuông giữ cánh tay và thân.

–   Trước khi bạn “la lên”, chú ý rằng vấn đề này đã gây ra sự bối rối thật sự. Cũng chú ý rằng tựa  đề của bài viết này chứa một gợi ý: Nó là Elementary? Sau cùng, bài học chúng ta rút ra là phải luôn sử dụng chữ hoa el (L) trong các trực kiện long, không nên sử dụng một chữ l thường cho điều này.

System.out.println(12345 + 5432L);

–   Tương tự, tránh sử dụng một chữ l (L thường) là tên biến. Xem đoạn code dưới đây thì khó biết được nó in danh sách l hay số 1:

public static void main(String[] args) {
    List<String> l = new ArrayList<String>();
    l.add("ThanhCuong.wordpress.com");                
    System.out.println(l);
}

Tóm lại, chữ l và số 1 dường như giống hết trong hầu hết các font chữ máy tính. Để tránh gây ra bối rối cho những người đọc chương trình, đừng bao giờ sử dụng một chữ l (L thường) để kết thúc một trực kiện long hoặc dưới dạng một tên biến. Java đã thừa kế nhiều từ ngôn ngữ lập trình C, kể cả cú pháp của nó cho các trực kiện long. Có lẽ để các trực kiên long được viết bằng một chữ l (L thường) là một sai lầm.

Advertisements

About thanhcuong1990

Handsome and talent!! ^^
This entry was posted in Java and tagged . Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s