Kịch bản là tôi cần truy cập một giá trị ít nhất hai lần. I E. Tôi đang sử dụng logger để theo dõi những gì đang xảy ra trong ứng dụng. Tôi muốn đăng nhập tên của đối tượng, chức năng đó đang hoạt động, và sau đó làm một cái gì đó với cùng một tên (ví dụ như kiểm tra nếu nó có chứa một số chuỗi hoặc đặt nó vào một mảng).Sử dụng các biến để lưu trữ các giá trị hoặc trực tiếp nhận các giá trị từ các đối tượng?
Lưu trữ các tên trong biến:
foo(Bar bar){
String name = bar.getName();
logger.info("I am working with "+name);
this.doSomethingWith(name);
}
Hoặc gọi getName() hai lần:
foo(Bar bar){
logger.info("I am working with "+bar.getName());
this.doSomethingWith(bar.getName());
}
Tôi hiểu, rằng trong kịch bản đầu tiên, tôi sẽ tạo ra một chuỗi mới, gán một giá trị với nó và sau đó lấy giá trị này hai lần. Bằng cách này tôi đang sử dụng nhiều tài nguyên bộ nhớ hơn, đúng không?
Trong trường hợp thứ hai, tôi có đang truy cập thanh đối tượng hai lần và sau đó truy cập tên của nó hai lần. Tôi cho rằng đây không phải là phương pháp DRY. Nhưng mặt khác, tôi không lặp lại trong bộ nhớ, đúng không?
Phương pháp nào tốt hơn?
Trong phương pháp đầu tiên bạn đang _không tạo chuỗi mới. Vì vậy, cả hai phương pháp nên kết thúc với mức tiêu thụ bộ nhớ tương tự. – Fildor
Nó có thể là giá trị kiểm tra mã byte được tạo ra với một trình biên dịch ngược để xem vấn đề của bạn thực sự là một vấn đề; 'javac' có thể nhận ra trường hợp sử dụng này và tối ưu hóa nó theo cách này hay cách khác không có vấn đề gì theo cách bạn viết nó trong Java. – akaIDIOT