2012-12-09 20 views
5

Có lý do chính đáng nào để sử dụng các tham số mà trường bóng không? sự khác biệt giữa hai là gì:Có lý do chính đáng nào để sử dụng các tham số cho các trường bóng không?

public class Point { 
    public int x = 0; 
    public int y = 0; 

    //constructor 
    public Point(int a, int b) { 
     x = a; 
     y = b; 
    } 
} 

public class Point { 
    public int x = 0; 
    public int y = 0; 

    //constructor 
    public Point(int x, int y) { 
     this.x = x; 
     this.y = y; 
    } 
} 

Và những gì nếu bạn sử dụng các từ khóa this không có tham số mà các lĩnh vực bóng trong ví dụ này (Tôi đoán nó chỉ là không cần thiết):

public class Point { 
    public int x = 0; 
    public int y = 0; 

    //constructor 
    public Point(int a, int b) { 
     this.x = a; 
     this.y = b; 
    } 
} 

Trả lời

5

Tôi nghĩ rằng đó là một vấn đề phong cách, nhưng đặc biệt là cho các lĩnh vực công cộng - Point(int x,int y)tự ghi lại bản thân, trong khi Point(int a, int b) không

+2

Và ngay cả khi các trường là không được công khai, chúng thường tiếp xúc bởi các API công cộng của lớp (thu khí, setters, phương pháp), hoặc một phần trạng thái của đối tượng như mô tả trong javadoc lớp. Sử dụng tên phù hợp thực sự hữu ích. –

2

Trong trường hợp thứ hai, rõ ràng là xy có một mục đích, mặc dù được lưu trữ ở hai nơi. Nếu bạn thấy a, b, xy thì không rõ ràng mối quan hệ giữa chúng là gì.

0

Sự khác biệt là khả năng đọc và những gì một IDE sẽ cho bạn thấy.

IMO thông số nên được đặt tên như descriptively càng tốt để IDE và Javadocs như giao tiếp và biểu cảm càng tốt.

0

Ngoài ra còn có vấn đề khó phát hiện lỗi hơn.

sử dụng x thay vì this.x trong hàm tạo là một nguồn lỗi tiềm ẩn.

Các vấn đề liên quan