Дозвольте запропонувати певну точку зору, чому ми додали цю функцію до мови, коли явно нам це не потрібно було (усі методи рефлексу можуть бути виражені як лямбда.)
Зауважте, що правильної відповіді немає . Той, хто каже, що "завжди використовуйте метод ref замість лямбда" або "завжди використовуйте лямбда замість методу ref", слід ігнорувати.
Це питання дуже схоже по духу на "коли я повинен використовувати названий клас проти анонімного класу"? І відповідь одна і та ж: коли вам здається, що це читабельніше . Безумовно, є випадки, які напевно є одним чи неодмінно іншим, але в середині є безліч сірих, і суд повинен використовуватись.
Теорія, що стоїть за методом refs, проста: назви мають значення . Якщо метод має ім'я, то посилання на нього по імені, а не на імперативний мішок коду, який врешті-решт просто обертається і викликає його, часто (але не завжди!) Є більш зрозумілим і читабельним.
Аргументи щодо продуктивності чи про підрахунок персонажів - це переважно червоні оселедці, і їх слід ігнорувати. Мета - написання коду, який є кристально зрозумілим, що він робить. Дуже часто (але не завжди!) Метод виграшів виграє в цій метриці, тому ми включили їх як варіант, який слід використовувати в цих випадках.
Ключовим моментом щодо того, чи уточнюють чи придушують наміри методу refs, є те, чи очевидно з контексту, яка форма функції представляється. У деяких випадках (наприклад, map(Person::getLastName)
з контексту зрозуміло, що функція, яка відображає одне на інше, потрібна, а у таких випадках світиться посилання на метод. В інших випадках використання методу ref вимагає від читача запитання про те, який вид функції описується; це попереджувальний знак того, що лямбда може бути читабельнішою, навіть якщо вона довша.
Нарешті, що ми з’ясували, що більшість людей спочатку відволікаються від рефлексу методів, тому що вони відчувають себе ще новішими та дивнішими, ніж лямбда, і тому спочатку вважають їх "менш читабельними", але з часом, коли вони звикають до синтаксису, як правило, змінюють свою поведінку і орієнтуються на посилання на методи, коли можуть. Тому майте на увазі, що ваша власна суб'єктивна початкова "менш читабельна" реакція майже напевно тягне за собою певний аспект упередженості фамільярності, і ви повинні дати собі шанс розслабитися обом, перш ніж висловлювати стилістичну думку.