Pozwólcie, że przedstawię pewne spojrzenie na to, dlaczego dodaliśmy tę funkcję do języka, skoro wyraźnie nie było to konieczne (wszystkie referencje metod można wyrazić jako lambdy).
Zauważ, że nie ma dobrej odpowiedzi . Każdy, kto mówi „zawsze używaj ref metody zamiast lambda” lub „zawsze używaj lambda zamiast odniesienia do metody” powinien zostać zignorowany.
To pytanie jest bardzo podobne w duchu do „kiedy powinienem używać nazwanej klasy, a kiedy anonimowej”? Odpowiedź jest taka sama: kiedy uznasz, że jest bardziej czytelny . Z pewnością są przypadki, które są zdecydowanie jednym lub zdecydowanie drugim, ale w środku jest mnóstwo szarości i należy zastosować ocenę.
Teoria stojąca za referencjami metod jest prosta: nazwy mają znaczenie . Jeśli metoda ma nazwę, to odwoływanie się do niej po nazwie, a nie za pomocą imperatywnego zbioru kodu, który ostatecznie po prostu obraca się i wywołuje ją, jest często (ale nie zawsze!) Bardziej przejrzyste i czytelne.
Spory o wydajność lub liczenie postaci to głównie czerwone śledzie i należy je zignorować. Celem jest napisanie kodu, który będzie krystalicznie jasny, co robi. Bardzo często (ale nie zawsze!) Referencje metod wygrywają w tym wskaźniku, więc włączyliśmy je jako opcję do wykorzystania w takich przypadkach.
Kluczową kwestią dotyczącą tego, czy odwołania do metod wyjaśniają, czy zaciemniają intencję, jest to, czy z kontekstu jasno wynika, jaki jest kształt reprezentowanej funkcji. W niektórych przypadkach (np. map(Person::getLastName)
Z kontekstu jasno wynika, że wymagana jest funkcja, która odwzorowuje jedną rzecz na drugą, aw takich przypadkach lśnią odniesienia do metod. W innych użycie ref do metody wymaga od czytelnika zastanowienia się, jakiego rodzaju funkcji; jest to znak ostrzegawczy, że lambda może być bardziej czytelna, nawet jeśli jest dłuższa.
Wreszcie, odkryliśmy, że większość ludzi na początku unika odwołań do metod, ponieważ czują się jeszcze nowsze i dziwniejsze niż lambdy, więc początkowo uważają je za „mniej czytelne”, ale z czasem, gdy przyzwyczają się do składni, ogólnie zmieniają swoje zachowanie i skłaniają się ku odniesieniom do metod, kiedy tylko mogą. Bądź więc świadomy, że Twoja subiektywna, początkowa, „mniej czytelna” reakcja prawie na pewno pociąga za sobą jakiś aspekt stronniczości rodzinnej i powinieneś dać sobie szansę oswoić się z oboma przed wyrażeniem opinii stylistycznej.