Hãy để tôi cung cấp một số quan điểm về lý do tại sao chúng tôi thêm tính năng này vào ngôn ngữ, trong khi rõ ràng chúng tôi không cần phải làm như vậy (tất cả các tham chiếu phương thức có thể được biểu thị dưới dạng lambdas.)
Lưu ý rằng không có câu trả lời đúng . Bất kỳ ai nói "luôn sử dụng phương thức ref thay vì lambda" hoặc "luôn sử dụng lambda thay vì phương thức ref" đều nên bị bỏ qua.
Câu hỏi này rất giống với tinh thần "khi nào tôi nên sử dụng một lớp có tên so với một lớp ẩn danh"? Và câu trả lời là như nhau: khi bạn thấy nó dễ đọc hơn . Chắc chắn có những trường hợp chắc chắn là một hoặc chắc chắn là khác nhưng có một loạt các màu xám ở giữa và phải sử dụng phán đoán.
Lý thuyết đằng sau phương pháp refs rất đơn giản: tên là vấn đề . Nếu một phương thức có tên, thì việc đề cập đến nó bằng tên, thay vì một túi mã bắt buộc mà cuối cùng chỉ quay lại và gọi nó, thường (nhưng không phải lúc nào!) Rõ ràng và dễ đọc hơn.
Các tranh luận về hiệu suất hoặc về việc đếm các ký tự chủ yếu là các vòng màu đỏ, và bạn nên bỏ qua chúng. Mục tiêu là viết mã rõ ràng những gì nó làm. Phương pháp refs rất thường xuyên (nhưng không phải lúc nào cũng vậy!) Giành chiến thắng trên số liệu này, vì vậy chúng tôi đã bao gồm chúng như một tùy chọn, được sử dụng trong những trường hợp đó.
Một điều quan trọng cần cân nhắc về việc liệu các ref của phương thức có làm rõ hoặc làm xáo trộn ý định là liệu nó có rõ ràng từ ngữ cảnh hình dạng của hàm đang được biểu diễn hay không. Trong một số trường hợp (ví dụ: map(Person::getLastName)
khá rõ ràng từ ngữ cảnh mà một hàm ánh xạ thứ này sang thứ khác được yêu cầu và trong những trường hợp như thế này, tham chiếu phương thức tỏa sáng. Trong những trường hợp khác, việc sử dụng phương thức ref yêu cầu người đọc tự hỏi về loại của hàm đang được mô tả; đây là một dấu hiệu cảnh báo rằng lambda có thể dễ đọc hơn, ngay cả khi nó dài hơn.
Cuối cùng, những gì chúng tôi nhận thấy là hầu hết mọi người lúc đầu tránh xa các tham chiếu phương thức bởi vì họ cảm thấy thậm chí còn mới hơn và kỳ lạ hơn lambdas, và do đó, ban đầu thấy chúng "ít đọc hơn", nhưng theo thời gian, khi họ quen với cú pháp, thường thay đổi hành vi của họ và thu hút các tham chiếu phương pháp khi họ có thể. Vì vậy, hãy lưu ý rằng phản ứng chủ quan "ít đọc" ban đầu của bạn gần như chắc chắn dẫn đến một số khía cạnh của thành kiến gia đình, và bạn nên cho mình cơ hội để làm quen với cả hai trước khi đưa ra ý kiến theo kiểu.