Khi tôi thấy chính mình gọi cùng một phương thức getter nhiều lần, đây có phải là vấn đề không? Tốt hơn là [luôn] gán cho một biến cục bộ và chỉ gọi một lần?Tối ưu hóa sớm trong Java: khi nào sử dụng "x = foo.getX()" vs đơn giản "foo.getX()"
Tôi chắc chắn câu trả lời tất nhiên là "nó phụ thuộc".
Tôi quan tâm hơn đến trường hợp đơn giản hơn, nơi getter chỉ đơn giản là phương thức kiểu "pass-along-the-value-of-a-private-variable". tức là không có tính toán đắt tiền nào liên quan, không có kết nối cơ sở dữ liệu nào được tiêu thụ, v.v.
Câu hỏi của tôi "tốt hơn" liên quan đến cả khả năng đọc mã (kiểu) và hiệu suất. ví dụ là nó rằng có rất nhiều hit hiệu suất để có:
SomeMethod1(a, b, foo.getX(), c);
SomeMethod2(b, foo.getX(), c);
SomeMethod3(foo.getX());
vs:
X x = foo.getX();
SomeMethod1(a, b, x, c);
SomeMethod2(b, x, c);
SomeMethod3(x);
Tôi nhận ra câu hỏi này là một chút nit-kén cá chọn canh và màu xám. Nhưng tôi mới nhận ra, tôi không có cách nào nhất quán để đánh giá những sự cân bằng này. Đang đánh bắt cá cho một số tiêu chí có nhiều hơn là chỉ hoàn toàn hay thay đổi.
Cảm ơn.
Đây là trường hợp chỉ có một chuỗi cập nhật foo mà tôi đoán? – extraneon
+1 cho việc sử dụng câu hay thay đổi trong câu hỏi –
Có phải foo không thay đổi (ít nhất là trong suốt thời gian tồn tại của x) không? Nếu không, thì chúng không giống nhau. Nó là không đủ rằng getX không có tác dụng phụ. Nếu SomeMethod1 gọi foo.setX thì chúng không giống nhau. Nếu chúng không giống nhau, thì thay vì lo lắng về khả năng đọc hoặc hiệu suất, hãy chọn đúng. – emory